swarm-0.6.0.0: data/scenarios/Testing/144-subworlds/subworld-shared-structures.yaml
version: 1
name: Subworld shared structures
description: |
Traverse the floors of the tower, then grab the flower in the middle
attrs:
- name: portal_in
fg: "#ff9a00"
bg: "#ff5d00"
- name: portal_out
fg: "#00a2ff"
bg: "#0065ff"
objectives:
- goal:
- |
Visit all of the floors
condition: |
as base {has "flower"}
entities:
- name: telepad entrance
display:
attr: portal_in
char: "o"
description:
- Portal entrance
properties: [known]
- name: telepad exit
display:
attr: portal_out
char: "o"
description:
- Portal exit
properties: [known]
robots:
- name: base
dir: east
loc:
subworld: root
loc: [0, 0]
devices:
- ADT calculator
- branch predictor
- comparator
- compass
- dictionary
- GPS receiver
- grabber
- lambda
- lodestone
- logger
- strange loop
- treads
solution: |
def doN = \n. \f. if (n > 0) {f; doN (n - 1) f} {}; end;
doN 4 (
doN 4 move;
turn right;
doN 4 move;
);
doN 2 move;
turn right;
doN 2 move;
grab;
known: [flower]
structures:
- name: minibox
structure:
palette:
'.': [stone]
'd': [dirt]
'p':
cell: [grass, telepad exit]
waypoint:
name: portal_out
'P':
cell: [grass, telepad entrance]
waypoint:
name: portal_in
map: |
p....
.ddd.
.d.d.
.ddd.
....P
- name: flowers
structure:
mask: '.'
palette:
'f': [stone, flower]
map: |
f.f
.f.
f.f
subworlds:
- name: floor1
default: [blank]
palette:
'.': [dirt]
placements:
- src: minibox
offset: [0, 0]
orient:
up: west
- src: flowers
offset: [1, 1]
portals:
- entrance: portal_in
exitInfo:
exit: portal_out
subworldName: floor2
reorient: back
upperleft: [0, 0]
map: |
.....
.....
.....
.....
.....
- name: floor2
default: [blank]
palette:
'.': [dirt]
placements:
- src: minibox
offset: [0, 0]
orient:
up: south
- src: flowers
offset: [1, 0]
portals:
- entrance: portal_in
exitInfo:
exit: portal_out
subworldName: floor3
reorient: back
upperleft: [0, 0]
map: |
.....
.....
.....
.....
.....
- name: floor3
default: [blank]
palette:
'.': [dirt]
placements:
- src: minibox
offset: [0, 0]
orient:
up: east
- src: flowers
offset: [1, -2]
portals:
- entrance: portal_in
exitInfo:
exit: portal_out
subworldName: root
reorient: back
upperleft: [0, 0]
map: |
.....
.....
.....
.....
.....
world:
name: root
palette:
'.': [grass]
upperleft: [0, 0]
placements:
- src: minibox
offset: [0, 0]
- src: flowers
offset: [0, -2]
portals:
- entrance: portal_in
exitInfo:
exit: portal_out
subworldName: floor1
reorient: back
map: |
.....
.....
.....
.....
.....