packages feed

swarm-0.4: data/scenarios/Challenges/Mazes/loopy_maze.yaml

version: 1
name: Invisible, loopy maze
author: Brent Yorgey
description: There is a maze, but it can't be seen, only sensed... can you
  program a robot to navigate it successfully?
objectives:
- goal:
  - There is a maze, but it can't be seen, only sensed... can you
    program a robot to navigate it successfully?  You need to get a robot
    to the goal square, labelled with an exclamation mark; you win by `grab`bing
    the `goal`{=entity}.
  - In this challenge, you are NOT guaranteed that the maze is a tree, that is,
    the maze may contain loops.
  condition: |
    try {
      teleport self (27, -17);
      b <- ishere "goal";
      return (not b)
    } { return false }
solution: |
  run "scenarios/Challenges/Mazes/loopy_maze_sol.sw"
robots:
  - name: base
    dir: [0,1]
    display:
      char: 'Ω'
      attr: robot
    devices:
      - dictionary
      - 3D printer
      - logger
      - grabber
    inventory:
      - [50, solar panel]
      - [50, treads]
      - [50, compass]
      - [50, scanner]
      - [50, lambda]
      - [50, branch predictor]
      - [50, strange loop]
      - [50, logger]
      - [50, grabber]
      - [1000, rock]
      - [0, boulder]
      - [0, goal]
entities:
  - name: wall
    display:
      invisible: true
    description:
    - An invisible wall.
    properties: [unwalkable, known]
  - name: goal
    display:
      char: '!'
      attr: device
    description:
    - The place you're trying to reach!  You win by executing `grab` on this item.
    properties: [known, portable]
world:
  dsl: |
    {grass}
  palette:
    'Ω': [grass, null, base]
    '.': [grass, null]
    'x': [grass, wall]
    '@': [grass, boulder]
    '!': [grass, goal]
  upperleft: [-1,1]
  map: |
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @.........x...x..............@
    @xx.xxxxx.x.x.xxx....xxxxxxx.@
    @.x.x...x.x.x...xxxx.......x.@
    @.....x.x.x.x.x....xxxxxxxxx.@
    @xx.xxxxx.x.x.xxxx...........@
    @.......x...x....xxxxxxx.xxxx@
    @.xxxxx.xxx.xxxx.x...........@
    @.x.x.x..x...Ω...x.xxx.xxxxx.@
    @.x.x.xx.x.x.xxx.x.x.....x...@
    @.x.x.xx.x.x...x...x.x.x.x.xx@
    @......x...x.x...x.x.x.x.x...@
    @xxxxxxx.xxx.xxxxx.x.x.x.xxx.@
    @....................x.x.x.x.@
    @xxxxxxxxxx.xxxxxxxxxx.x.x.x.@
    @..x...x.......x.....x.x.....@
    @x.......x...x...x.x.x.x.x.x.@
    @xxxxxxxxxx.xxxxxx.x.x.x.x.x.@
    @..................x...x...x!@
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@