openct-tasks/bebras/2018/2018-FR-10-parallel-processing/index_sv.html

161 lines
8.1 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8"></meta>
<title>2018-FR-10-parallel-processing</title>
<script>
window.stringsLanguage = 'sv';
</script>
<script class="remove" type="text/javascript" src="../../../_common/modules/pemFioi/importModules-1.1_M.js" id="import-modules"></script>
<script class="remove" type="text/javascript">
var modulesPath = '../../../_common/modules';
importModules([
'jquery-1.7.1', 'jquery-ui.touch-punch', 'raphael-2.2.1', 'JSON-js', 'grid-1.0',
'beav-1.0', 'beaver-task-2.0', 'simulation-2.0', 'raphaelFactory-1.0',
'delayFactory-1.0', 'simulationFactory-1.0', 'raphaelButton-1.0',
'platform-pr', 'buttonsAndMessages', 'installationAPI.01', 'miniPlatform',
'taskStyles-0.1', 'randomGenerator-1.0'
]);
</script>
<script class="remove" type="text/javascript">
var json = {
"id": "http://castor-informatique.fr/tasks/2017/2017-FR-05-draw-shapes/",
"language": "sv",
"version": "sv.01",
"authors": "Arthur Charguéraud, Mathias Hiron, France-ioi",
"translators": ["Staffan Söderhjelm"],
"license": "CC BY-SA 3.0",
"taskPathPrefix": "",
"modulesPathPrefix": "",
"browserSupport": [],
"fullFeedback": true,
"acceptedAnswers": [],
"usesRandomSeed": false
};
</script>
<script type="text/javascript">
var taskStrings = {
moveForward: "Gå ett steg framåt",
moveForwardIf: "Om rutan framför roboten är tom, gå ett steg framåt",
turnLeft: "Sväng vänster",
turnRight: "Sväng höger",
ifRobAhead: "Om rutan framför roboten är upptagen,\n gå till programsteg 3",
ifRob2Ahead: "Om en av de två rutorna framför roboten är upptagen, \n gå till programsteg 3",
ifWhiteCell: "Om roboten står på en vit ruta,\n gå till programsteg 1",
end: "Slut på programmet",
execute: "Utför \n denna instruktion \n för roboten",
failureNoCrash: "Robot 1 har inte kört in i Robot 2.",
failureSwapped: "Robot 2 har kört in i Robot 1, men det skulle vara tvärtom. Försök på ett annat sätt.",
failureEndNoCrash: "Alla robotarna har stoppat, men Robot 1 har inte kört in i Robot 2.",
failureEndNoStuck: "Alla robotarna har stoppat, och man ser att de är blockerade.",
success: "Bravo, du har klarat denna nivå!",
cellForward: "Gick från programsteg 2 till 3 \n efter att ha gått en ruta framåt.",
cellReachEnd: "Gick från programsteg 3 till 4 \n efter att ha \n gått en ruta framåt.",
cell2AheadNotFree: "Gick från programsteg 1 till 3 \n eftersom en av de två rutorna framför \n roboten är upptagen.",
cellAheadNotFreeMedium: "Gick från programsteg 1 till 3 \n eftersom rutan framför \n roboten är upptagen.",
cellAheadNotFreeHard: "Gick från programsteg 3 till 4 eftersom \n roboten är på en grön ruta.",
cellAheadFree: "Gick från programsteg 1 till 2\n eftersom rutan framför roboten \n är ledig.",
cellAheadFreeForward: "Gick från programsteg 2 till 3\n efter ett steg framåt till en ledig ruta.",
cell2AheadFree: "Gick från programsteg 1 till 2\n eftersom de två rutorna \n framför roboten är lediga.",
onWhiteCell: "Gick från programsteg 3 till 1 \n eftersom roboten står på en vit ruta.",
robotNotStuck: function(rob){
return "Robot "+rob+" kan fortfarande röra sig.";
},
undo: "Ångra"
};
</script>
<script type="text/javascript" src="task.js"></script>
<style>
#annuler {
display: block;
margin: auto;
width: 9em;
}
</style>
</head>
<body>
<div id="editor"></div>
<div id="task">
<h1>Parallella processer</h1>
<div id="tabsContainer"></div>
<div id="taskContent">
<div id="zone_1">
<div class="consigne">
<p>
Rutnätet innehåller <span class="easy medium">2</span><span class="hard">4</span> robotar beskrivna av pilar med nummer.
</p>
<p>
<span class="easy">Robotarna kontrolleras av varsitt program.</span>
<span class="medium">Robotarna kontrolleras båda av samma program.</span>
<span class="hard">Robotarna kontrolleras alla av samma program.</span>
</p>
<p class="easy medium">
Utför instruktioner för vardera roboten som gör att Robot 1 kör in i Robot 2.
</p>
<p class="hard">
Utför instruktioner för de olika robotarna tills ett läge nås när <b>alla robotarna är blockerade</b> innan någon har nått en grön ruta.
</p>
<p>
För att uppnå detta, klicka på de grå knapparna i valfri ordning.
</p>
</div>
</div>
<div id="zone_2">
<div id="paper"></div>
</div>
<input type="button" value="Undo" id="annuler" />
</div>
<img src="icon.png" style="display:none">
</div>
<!-- task -->
<div id="solution">
<h2>Lösning</h2>
<div class="easy">
<p>Kollisionen mellan robot <b>1</b> och robot <b>2</b> kan bara ske där deras vägar korsas.</p>
<img src="sol_easy_1.png">
<p>Man börjar med att föra robot <b>2</b> till kollisionsplatsen. Sedan stegar man fram robot <b>1</b> tills den kör in i robot <b>2</b>.</p>
<img src="sol_easy_2sv.png">
<p>För att lösa uppgiften kan man alltså successivt trycka på knapparna: <b>2, 2, 1, 1, 1, 1, 1</b>.</p>
</div>
<div class="medium">
<p>Om man för robot <b>2</b> till kollisionsplatsen mellan robotarna och sedan för dit robot <b>1</b> kommer denna att blockeras av robot <b>2</b> och vägra flytta sig. Instruktionen i steg 1 säger att om det finns en robot framför ska man gå till steg 3, som säger att man ska gå tillbaka till steg 1, i en oändlig loop.</p>
<img src="sol_medium_0sv.png" style="width:650px">
<p>Man måste alltså göra på något annat sätt. Man för först robot <b>1</b> till rutan innan kollisionsplatsen. Man utför instruktionen i steg 1 innan robot <b>1</b> har något framför sig. På så sätt är robot <b>1</b> färdig att utföra steg 2, dvs ta ett steg framåt, utan att fråga efter något villkor. </p>
<img src="sol_medium_1sv.png" style="width:650px">
<p>Man kan sedan föra robot <b>2</b> till kollisionsplatsen och så till sist utföra steg 2 för robot <b>1</b> så att den kör in i robot <b>2</b>.</p>
<img src="sol_medium_2sv.png" style="width:650px">
<p>En lösning är alltså att successivt klicka på knapparna: <b>1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1</b>.</p>
</div>
<div class="hard">
<p>För att komma till ett låst läge måste man föra alla robotarna till en position precis innan de blockeras av varandra, samt ha alla vid programsteg 2.</p>
<p>Genom att uföra en korrekt serie steg för varje robot för sig, kan man nå följande läge :</p>
<img src="sol_hard_1sv.png" style="width:650px">
<p>Därefter är det bara att utföra ett ytterligare steg 2 för var och en av robotarna, vilket ger följande helt låsta läge.</p>
<img src="sol_hard_2.png" style="width:215px">
<p>Lösningen är alltså att successivt klicka på knapparna: <b>1, 1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 1, 2, 3, 4</b>.</p>
</div>
<h2>Det är datavetenskap!</h2>
</div>
<!-- task-solution -->
</body>
</html>