swarm-0.3.0.0: data/scenarios/Challenges/teleport.yaml
version: 1
name: Portal room
author: Ondřej Šebek
description: An impossible challenge - can you magically jump across the water?
objectives:
- goal:
- Get to the other room and grab the lambda.
- Oh wait.
- The tunnel is flooded.
- Just give up then. It is impossible to get there.
condition: |
try {
as base {has "lambda"}
} { return false }
solution: |
def w2 = turn back; turn back end;
def w10 = w2; w2; w2; w2; w2 end;
turn back; move;move;move; w10; move;move;move; grab
robots:
- name: base
loc: [3,0]
dir: [1,0]
devices:
- treads
- logger
- grabber
- dictionary
inventory:
- [0, lambda]
- name: portkey1
system: true
loc: [0,0]
dir: [0,0]
program: |
def forever = \prog. wait 10; prog; forever prog; end;
destRob <- robotNamed "portkey2";
destPos <- as destRob {whereami};
myPos <- whereami;
forever (
basePos <- as base {whereami};
if (myPos == basePos) {teleport base destPos} {};
);
- name: portkey2
system: true
loc: [16,0]
dir: [0,0]
program: |
def forever = \prog. wait 10; prog; forever prog; end;
wait 5;
destRob <- robotNamed "portkey1";
destPos <- as destRob {whereami};
myPos <- whereami;
forever (
basePos <- as base {whereami};
if (myPos == basePos) {teleport base destPos} {};
);
known: [water, wavy water, flower, tree]
world:
default: [ice, water]
palette:
',': [ice, water]
' ': [ice, water]
'~': [ice, wavy water]
'*': [grass, flower]
'T': [grass, tree]
'.': [grass]
'_': [stone]
'┌': [stone, upper left corner]
'┐': [stone, upper right corner]
'└': [stone, lower left corner]
'┘': [stone, lower right corner]
'─': [stone, horizontal wall]
'│': [stone, vertical wall]
'λ': [grass, lambda]
upperleft: [-1, 3]
map: |
~~ ~ ~ ~
~┌─────┐~ ┌─────┐~ ,
┌┘.....└───┘T...*└┐ ~
│_....._ _..λ.._│ ,
└┐.....┌───┐*...T┌┘ ~
~└─────┘ ~~└─────┘~ ,
~~~ ~ ~ ~