Listing 3. Read the Maze Description main => R = read_int(), C = read_int(), Walls = [], Doors = [], Keys = [], (ExitI, ExitJ) = (_, _), (HeroI, HeroJ) = (_, _), foreach (I in 1..R) Line = read_line(), foreach (J in 1..C) Char = Line[J], if Char == '@' then HeroI := I, HeroJ := J end, if Char == 'X' then ExitI := I, ExitJ := J end, if Char == '#' then Walls := [(I, J) | Walls] end, if Char == '|' then Doors := [(I, J) | Doors] end, if Char == '=' then Keys := [(I, J) | Keys] end end end, InitState = (R, C, (ExitI, ExitJ), Walls, Doors, Keys, 0, (HeroI, HeroJ)), println(InitState).