diff --git a/examples/sokoban/.gitignore b/examples/sokoban/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/examples/sokoban/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/examples/sokoban/app.asd b/examples/sokoban/app.asd new file mode 100644 index 0000000..01382e7 --- /dev/null +++ b/examples/sokoban/app.asd @@ -0,0 +1,8 @@ +(defsystem :app + :serial t + :depends-on () + :components ((:file "lisp/3rd-party/sokoban") + (:file "lisp/3rd-party/my-levels") + (:file "lisp/package") + (:file "lisp/ui-vars") + (:file "lisp/sokoban"))) diff --git a/examples/sokoban/lisp/3rd-party/CONTRIBUTORS b/examples/sokoban/lisp/3rd-party/CONTRIBUTORS new file mode 100644 index 0000000..f4ffb9a --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/CONTRIBUTORS @@ -0,0 +1,6 @@ +# Please add yourself to this file when you submit a patch. + +Julian Fondren + - Maintainer. + - Contributed simple-ui ! :D + - also: raw-ui , cl-sokoban.el diff --git a/examples/sokoban/lisp/3rd-party/COPYING b/examples/sokoban/lisp/3rd-party/COPYING new file mode 100644 index 0000000..844d5b0 --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/COPYING @@ -0,0 +1,3 @@ +BSD with no advertisement clause. + +Copyrights held by their respective authors. diff --git a/examples/sokoban/lisp/3rd-party/README.txt b/examples/sokoban/lisp/3rd-party/README.txt new file mode 100644 index 0000000..75aff10 --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/README.txt @@ -0,0 +1,3 @@ +Please see http://www.cliki.net/CL-Sokoban for the original game. + +See also note in "my-levels.lisp" (taken from "YASC_1_639_src.zip" on sourceforge.net). diff --git a/examples/sokoban/lisp/3rd-party/levels.lisp b/examples/sokoban/lisp/3rd-party/levels.lisp new file mode 100644 index 0000000..6d8691e --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/levels.lisp @@ -0,0 +1,816 @@ +(in-package :cl-sokoban) + +(defmaze + " ##### " + " # # " + " #$ # " + " ### $## " + " # $ $ # " + "### # ## # ######" + "# # ## ##### ..#" + "# $ $ ..#" + "##### ### #@## ..#" + " # #########" + " ####### ") + +(defmaze + "############ " + "#.. # ###" + "#.. # $ $ #" + "#.. #$#### #" + "#.. @ ## #" + "#.. # # $ ##" + "###### ##$ $ #" + " # $ $ $ $ #" + " # # #" + " ############") + +(defmaze + " ######## " + " # @# " + " # $#$ ## " + " # $ $# " + " ##$ $ # " + "######### $ # ###" + "#.... ## $ $ #" + "##... $ $ #" + "#.... ##########" + "######## ") + +(defmaze + " ########" + " # ....#" + "############ ....#" + "# # $ $ ....#" + "# $$$#$ $ # ....#" + "# $ $ # ....#" + "# $$ #$ $ $########" + "# $ # # " + "## ######### " + "# # ## " + "# $ ## " + "# $$#$$ @# " + "# # ## " + "########### ") + +(defmaze + " ##### " + " # #####" + " # #$## #" + " # $ #" + "######### ### #" + "#.... ## $ $###" + "#.... $ $$ ## " + "#.... ##$ $ @# " + "######### $ ## " + " # $ $ # " + " ### ## # " + " # # " + " ###### ") + +(defmaze + "###### ### " + "#.. # ##@##" + "#.. ### #" + "#.. $$ #" + "#.. # # $ #" + "#..### # $ #" + "#### $ #$ #" + " # $# $ #" + " # $ $ #" + " # ## #" + " #########") + +(defmaze + " ##### " + " ####### ##" + "## # @## $$ #" + "# $ #" + "# $ ### #" + "### #####$###" + "# $ ### ..# " + "# $ $ $ ...# " + "# ###...# " + "# $$ # #...# " + "# ### ##### " + "#### ") + +(defmaze + " #### " + " # ###########" + " # $ $ $ #" + " # $# $ # $ #" + " # $ $ # #" + "### $# # #### #" + "#@#$ $ $ ## #" + "# $ #$# # #" + "# $ $ $ $ #" + "##### #########" + " # # " + " # # " + " #......# " + " #......# " + " #......# " + " ######## ") + +(defmaze + " #######" + " # ...#" + " ##### ...#" + " # . .#" + " # ## ...#" + " ## ## ...#" + " ### ########" + " # $$$ ## " + " ##### $ $ #####" + "## #$ $ # #" + "#@ $ $ $ $ #" + "###### $$ $ #####" + " # # " + " ######## ") + +(defmaze + " ### #############" + "##@#### # #" + "# $$ $$ $ $ ...#" + "# $$$# $ #...#" + "# $ # $$ $$ #...#" + "### # $ #...#" + "# # $ $ $ #...#" + "# ###### ###...#" + "## # # $ $ #...#" + "# ## # $$ $ $##..#" + "# ..# # $ #.#" + "# ..# # $$$ $$$ #.#" + "##### # # #.#" + " # ######### #.#" + " # #.#" + " ###############") + +(defmaze + " #### " + " #### # # " + " ### @###$ # " + " ## $ # " + " ## $ $$## ## " + " # #$## # " + " # # $ $$ # ### " + " # $ # # $ #####" + "#### # $$ # #" + "#### ## $ #" + "#. ### ########" + "#.. ..# #### " + "#...#.# " + "#.....# " + "####### ") + +(defmaze + "################ " + "# # " + "# # ###### # " + "# # $ $ $ $# # " + "# # $@$ ## ##" + "# # $ $ $###...#" + "# # $ $ ##...#" + "# ###$$$ $ ##...#" + "# # ## ##...#" + "##### ## ##...#" + " ##### ###" + " # # " + " ####### ") + +(defmaze + " ######### " + " ## ## ###### " + "### # # ###" + "# $ #$ # # ... #" + "# # $#@$## # #.#. #" + "# # #$ # . . #" + "# $ $ # # #.#. #" + "# ## ##$ $ . . #" + "# $ # # #$#.#. #" + "## $ $ $ $... #" + " #$ ###### ## #" + " # # ##########" + " #### ") + +(defmaze + " ####### " + " ####### # " + " # # $@$ # " + " #$$ # #########" + " # ###......## #" + " # $......## # #" + " # ###...... #" + "## #### ### #$##" + "# #$ # $ # # " + "# $ $$$ # $## # " + "# $ $ ###$$ # # " + "##### $ # # " + " ### ### # # " + " # # # " + " ######## # " + " #### ") + +(defmaze + " ######## " + " # # # " + " # $ # " + " ### #$ #### " + " # $ ##$ # " + " # # @ $ # $# " + " # # $ ####" + " ## ####$## #" + " # $#.....# # #" + " # $..*$. $# ###" + "## #.....# # " + "# ### ####### " + "# $$ # # " + "# # # " + "###### # " + " ##### ") + +(defmaze + "##### " + "# ## " + "# # #### " + "# $ #### # " + "# $$ $ $# " + "###@ #$ ## " + " # ## $ $ ##" + " # $ ## ## .#" + " # #$##$ #.#" + " ### $..##.#" + " # #.*...#" + " # $$ #.....#" + " # #########" + " # # " + " #### ") + +(defmaze + " ########## " + " #.. # # " + " #.. # " + " #.. # #### " + " ####### # ##" + " # #" + " # # ## # #" + "#### ## #### ##" + "# $ ##### # #" + "# # $ $ # $ #" + "# @$ $ # ##" + "#### ## ####### " + " # # " + " ###### ") + +(defmaze + " ########### " + " # . # # " + " # #. @ # " + " ##### ##..# #### " + "## # ..### ###" + "# $ #... $ # $ #" + "# .. ## ## ## #" + "####$##$# $ # # #" + " ## # #$ $$ # #" + " # $ # # # $## #" + " # #" + " # ########### #" + " #### ####") + +(defmaze + " ###### " + " # @#### " + "##### $ # " + "# ## #### " + "# $ # ## # " + "# $ # ##### # " + "## $ $ # # " + "## $ $ ### # # " + "## # $ # # # " + "## # #$# # # " + "## ### # # ######" + "# $ #### # #....#" + "# $ $ ..#.#" + "####$ $# $ ....#" + "# # ## ....#" + "###################") + +(defmaze + " ########## " + "##### #### " + "# # $ #@ # " + "# #######$#### ###" + "# # ## # #$ ..#" + "# # $ # # #.#" + "# # $ # #$ ..#" + "# # ### ## #.#" + "# ### # # #$ ..#" + "# # # #### #.#" + "# #$ $ $ #$ ..#" + "# $ # $ $ # #.#" + "#### $### #$ ..#" + " # $$ ###....#" + " # ## ######" + " ######## ") + +(defmaze + "######### " + "# # " + "# #### " + "## #### # # " + "## #@## # " + "# $$$ $ $$# " + "# # ## $ # " + "# # ## $ ####" + "#### $$$ $# #" + " # ## ....#" + " # # # #.. .#" + " # # # ##...#" + " ##### $ #...#" + " ## #####" + " ##### ") + +(defmaze + "###### #### " + "# ####### #####" + "# $# # $ # #" + "# $ $ $ # $ $ #" + "##$ $ # @# $ #" + "# $ ########### ##" + "# # #.......# $# " + "# ## # ......# # " + "# # $........$ # " + "# # $ #.... ..# # " + "# $ $####$#### $# " + "# $ ### $ $ ##" + "# $ $ $ $ #" + "## ###### $ ##### #" + "# # #" + "###################") + +(defmaze + " ####### " + " # # #### " + "##### $#$ # ## " + "#.. # # # # " + "#.. # $#$ # $#### " + "#. # #$ # # " + "#.. $# # $ # " + "#..@# #$ #$ # # " + "#.. # $# $# # " + "#.. # #$$#$ # ##" + "#.. # $# # $#$ #" + "#.. # # # # #" + "##. #### ##### #" + " #### #### #####") + +(defmaze + "############### " + "#.......... .#### " + "#..........$$.# # " + "###########$ # ##" + "# $ $ $ #" + "## #### # $ # #" + "# # ## # ##" + "# $# # ## ### ##" + "# $ #$### ### ##" + "### $ # # ### ##" + "### $ ## # # ##" + " # $ # $ $ $ #" + " # $ $#$$$ # #" + " # # $ #####" + " # @## # # # " + " ############## ") + +(defmaze + "#### " + "# ############## " + "# # ..#......# " + "# # # ##### ...# " + "##$# ........# " + "# ##$###### ####" + "# $ # ######@ #" + "##$ # $ ###### #" + "# $ #$$$## #" + "# # #$#$###" + "# #### #$$$$$ # " + "# # $ # # " + "# # ## ###" + "# ######$###### $ #" + "# # # #" + "########## #####") + +(defmaze + " ####### " + " # # ##### " + "## # #...### " + "# $# #... # " + "# $ #$$ ... # " + "# $# #... .# " + "# # $########" + "##$ $ $ #" + "## # $$ # #" + " ###### ##$$@#" + " # ##" + " ######## ") + +(defmaze + " ################# " + " #... # # ##" + "##..... $## # #$ #" + "#......# $ # #" + "#......# # # # #" + "######### $ $ $ #" + " # #$##$ ##$##" + " ## $ # $ #" + " # ## ### # ##$ #" + " # $ $$ $ $ #" + " # $ $##$ ######" + " ####### @ ## " + " ###### ") + +(defmaze + " ##### " + " ##### # " + " ## $ $ ####" + "##### $ $ $ ##.#" + "# $$ ##..#" + "# ###### ###.. #" + "## # # #... #" + "# $ # #... #" + "#@ #$ ## ####...#" + "#### $ $$ ##..#" + " ## $ $ $...#" + " # $$ $ # .#" + " # $ $ ####" + " ###### # " + " ##### ") + +(defmaze + "##### " + "# ## " + "# $ ######### " + "## # # ######" + "## # $#$#@ # #" + "# # $ # $ #" + "# ### ######### ##" + "# ## ..*..... # ##" + "## ## *.$..$.$ # ##" + "# $########## ##$ #" + "# $ $ $ $ #" + "# # # # # #" + "###################") + +(defmaze + " ########### " + " # # # " + "##### # $ $ # " + "# ##### $## # ## " + "# $ ## # ## $ # " + "# $ @$$ # ##$$$ # " + "## ### # ## # " + "## # ### #####$# " + "## # $ #....# " + "# ### ## $ #....##" + "# $ $ # #..$. #" + "# ## $ # ##.... #" + "##### ######...##" + " ##### ##### ") + +(defmaze + " #### " + " # ######### " + " ## ## # # " + " # $# $@$ #### " + " #$ $ # $ $# ##" + "## $## #$ $ #" + "# # # # $$$ #" + "# $ $ $## ####" + "# $ $ #$# # # " + "## ### ###$ # " + " # #.... # " + " ####......#### " + " #....#### " + " #...## " + " #...# " + " ##### ") + +(defmaze + " #### " + " ##### # " + " ## $# " + "## $ ## ### " + "#@$ $ # $ # " + "#### ## $# " + " #....#$ $ # " + " #....# $# " + " #.... $$ ##" + " #... # $ #" + " ######$ $ #" + " # ###" + " #$ ### " + " # # " + " #### ") + +(defmaze + "############" + "## ## #" + "## $ $ #" + "#### ## $$ #" + "# $ # #" + "# $$$ # ####" + "# # # $ ##" + "# # # $ #" + "# $# $# #" + "# ..# ####" + "####.. $ #@#" + "#.....# $# #" + "##....# $ #" + "###..## #" + "############") + +(defmaze + " ######### " + " #.... ## " + " #.#.# $ ## " + "##....# # @## " + "# ....# # ##" + "# #$ ##$ #" + "## ### $ #" + " #$ $ $ $# #" + " # # $ $ ## #" + " # ### ## #" + " # ## ## ##" + " # $ # $ # " + " ###$ $ ### " + " # ##### " + " #### ") + +(defmaze + "############ ######" + "# # # ###....#" + "# $$# @ .....#" + "# # ### # ....#" + "## ## ### # ....#" + " # $ $ # # ####" + " # $ $## # #" + "#### # #### # ## #" + "# # #$ ## # #" + "# $ $ # ## # ##" + "# # $ $ # # # " + "# $ ## ## # ##### " + "# $$ $$ # " + "## ## ### $ # " + " # # # # " + " ###### ###### ") + +(defmaze + " ##### " + "##### ###### # " + "# #### $ $ $ # " + "# $ ## ## ## ## " + "# $ $ $ $ # " + "### $ ## ## ##" + " # ##### #####$$ #" + " ##$##### @## #" + " # $ ###$### $ ##" + " # $ # ### ### " + " # $$ $ # $$ # " + " # # ## # " + " #######.. .### " + " #.........# " + " #.........# " + " ########### ") + +(defmaze + "########### " + "#...... #########" + "#...... # ## #" + "#..### $ $ #" + "#... $ $ # ## #" + "#...#$##### # #" + "### # #$ #$ #" + " # $$ $ $ $## #" + " # $ #$#$ ##$ #" + " ### ## # ## #" + " # $ $ ## ######" + " # $ $ # " + " ## # # # " + " #####@##### " + " ### ") + +(defmaze + " #### " + "####### @# " + "# $ # " + "# $## $# " + "##$#...# # " + " # $... # " + " # #. .# ##" + " # # #$ #" + " #$ $ #" + " # #######" + " #### ") + +(defmaze + " ######" + " #############....#" + "## ## ##....#" + "# $$## $ @##....#" + "# $$ $# ....#" + "# $ ## $$ # # ...#" + "# $ ## $ # ....#" + "## ##### ### ##.###" + "## $ $ ## . #" + "# $### # ##### ###" + "# $ # # " + "# $ #$ $ $### # " + "# $$$# $ # #### " + "# # $$ # " + "###### ### " + " ##### ") + +(defmaze + " ############ " + " # ##" + " # # #$$ $ #" + " #$ #$# ## @#" + " ## ## # $ # ##" + " # $ #$ # # " + " # # $ # # " + " ## $ $ ## # " + " # # ## $ # " + " # ## $$# # " + "######$$ # # " + "#....# ######## " + "#.#... ## " + "#.... # " + "#.... # " + "######### ") + +(defmaze + " ##### " + " ## ## " + " ## # " + " ## $$ # " + " ## $$ $ # " + " # $ $ # " + "#### # $$ #####" + "# ######## ## #" + "#. $$$@#" + "#.# ####### ## ##" + "#.# #######. #$ $##" + "#........... # #" + "############## $ #" + " ## ##" + " #### ") + +(defmaze + " ######## " + " #### ######" + " # ## $ $ @#" + " # ## ##$#$ $ $##" + "### ......# $$ ##" + "# ......# # #" + "# # ......#$ $ #" + "# #$...... $$# $ #" + "# ### ###$ $ ##" + "### $ $ $ $ # " + " # $ $ $ $ # " + " ###### ###### " + " ##### ") + +(defmaze + " ####### " + " ##### # #### " + " # # $ # " + " #### #$$ ## ## # " + "## # # ## ###" + "# ### $#$ $ $ #" + "#... # ## # #" + "#...# @ # ### ##" + "#...# ### $ $ #" + "######## ## # #" + " #########") + +(defmaze + " ##### " + " # # " + " # # ####### " + " # $@###### " + " # $ ##$ ### # " + " # #### $ $ # " + " # ##### # #$ ####" + "## #### ##$ #" + "# $# $ # ## ## #" + "# # #...# #" + "###### ### ... #" + " #### # #...# #" + " # ### # #" + " # #" + " #########") + +(defmaze + "##### #### " + "#...# # #### " + "#...### $ # " + "#....## $ $### " + "##....## $ # " + "###... ## $ $ # " + "# ## # $ # " + "# ## # ### ####" + "# $ # #$ $ #" + "# $ @ $ $ #" + "# # $ $$ $ ###" + "# ###### ### " + "# ## #### " + "### ") + +(defmaze + "########## " + "# #### " + "# ###### # ##" + "# # $ $ $ $ #" + "# #$ #" + "###$ $$# ###" + " # ## # $## " + " ##$# $ @# " + " # $ $ ### " + " # # $ # " + " # ## # # " + " ## ##### # " + " # # " + " #.......### " + " #.......# " + " ######### ") + +(defmaze + " #### " + " ######### ## " + "## $ $ #####" + "# ## ## ##...#" + "# #$$ $ $$#$##...#" + "# # @ # ...#" + "# $# ###$$ ...#" + "# $ $$ $ ##....#" + "###$ #######" + " # ####### " + " #### ") + +(defmaze + " ######### " + " #*.$#$.$# " + " #.*.$.$.# " + " #*.$.$.$# " + " #.*.$.$.# " + " #*.$.$.$# " + " ### ### " + " # # " + "###### ######" + "# #" + "# $ $ $ $ $ #" + "## $ $ $ $ ##" + " #$ $ $ $ $# " + " # $@$ # " + " # ##### # " + " #### #### ") + +(defmaze + " #### " + " # ## " + " # ## " + " # $$ ## " + " ###$ $ ## " + " #### $ # " + "### # ##### # " + "# # #....$ # " + "# # $ ....# # " + "# $ # #.*..# # " + "### #### ### # " + " #### @$ ##$##" + " ### $ #" + " # ## #" + " #########") + +(defmaze + " ############ " + " ##.. # # " + " ##..* $ $ # " + " ##..*.# # # $## " + " #..*.# # # $ # " + "####...# # # # " + "# ## # # " + "# @$ $ ### # ## " + "# $ $ # # # " + "###$$ # # # # # " + " # $ # # #####" + " # $# ##### #" + " #$ # # # #" + " # ### ## #" + " # # # ##" + " #### ###### ") + + + +(setf *mazes* (nreverse *mazes*)) diff --git a/examples/sokoban/lisp/3rd-party/my-levels.lisp b/examples/sokoban/lisp/3rd-party/my-levels.lisp new file mode 100644 index 0000000..8384708 --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/my-levels.lisp @@ -0,0 +1,3725 @@ +;;; +;;; SokEvo and SokHard puzzles generated using SokEvo +;;; Author: Lee J Haywood +;;; Original website: http://fruise.googlepages.com/sokoban.html +;;; Collection: Haywood +;;; +;;; This collection of Sokoban puzzles was generated by a program written by +;;; Lee J Haywood that used random numbers and Brian Damgaard's YASGen program +;;; to 'evolve' them. +;;; The puzzles in the collection may be freely distributed and may be used +;;; commercially provided that they remain unchanged and I am credited with my +;;; name - Lee J Haywood. Any similarity to anyone else's work is entirely +;;; coincidental and unintentional. +;;; The puzzles may be included with any program under the GNU General Public +;;; License, version 3.0 or later, with the following restrictions (see the +;;; Additional Terms section of the GPL). +;;; (1) A copy of this text must be included with the program, and also with +;;; all derivatives of that program which include any of the puzzles. +;;; (2) Misrepresentation of the origin of the puzzles is prohibited, and +;;; modified versions must be marked as such. +;;; +;;; Author's notes: +;;; +;;; The SokEvo puzzles are sorted by the length of their shortest solutions, +;;; which is intended to be an objective way of ordering them from easiest to +;;; hardest. Your abilities are likely to mean that some seem to be out of +;;; place, however. Also, some puzzles have more solutions than others so may +;;; be easier as a result. The later puzzles are extremely difficult. +;;; +;;; The SokHard puzzles are sorted in release order. +;;; + +(in-package :cl-sokoban) + +(defun add-solution (&rest lines) + (push (x:join lines "") *solutions*)) + +;;; mazes & solutions + +(defmaze + "#######" + "#.@ # #" + "#$* $ #" + "# $ #" + "# .. #" + "# * #" + "#######") + +(add-solution + "DDrdrruLruLLDllU") + +(defmaze + "#######" + "#. #" + "#$* # #" + "#. $*#" + "# .$ #" + "#@ * #" + "#######") + +(add-solution + "uuUdrruurrdDLLLrrddrUlL") + +(defmaze + "#######" + "# #" + "#@$.# #" + "#*$ .#" + "# $$ #" + "# . . #" + "#######") + +(add-solution + "RlDRRRddlllUdrrruullDRurD") + +(defmaze + "#######" + "# ###" + "# ** #" + "# $ #" + "# $..#" + "###@ #" + "#######") + +(add-solution + "ruLulldRRdrruuLLdRllluurDldRR") + +(defmaze + "########" + "# * .#" + "# $ * #" + "# .$ $ #" + "#* * *#" + "#.# # #" + "# @ #" + "########") + +(add-solution + "uuluLruulDlldDuurrrRlddLLrruulDrdrUrU") + +(defmaze + "#######" + "# . #" + "# $*$$#" + "# ..$.#" + "#@* $ #" + "##. #" + "#######") + +(add-solution + "urDrdrruuLrddllulluuurrrrDulllDlddrrdrruLLruUruL") + +(defmaze + "########" + "# # *#" + "# * * #" + "# *$ $ #" + "# .#. #" + "# # *#" + "## @ #" + "########") + +(add-solution + "rruuruuLDDuuulDLDRurrddlUllDlluuRlddrddrUdrrU") + +(defmaze + "#######" + "# #" + "#$* # #" + "#.@ $.#" + "# .$$$#" + "# .. #" + "#######") + +(add-solution + "ddrrrUULLDuuullDDRluurrdDlddlUrurrDLuuurrD") + +(defmaze + "########" + "# *@ #" + "## .. .#" + "# *$$.$#" + "# $.$ #" + "# $ *.##" + "## ###" + "########") + +(add-solution + "dlluRdrdDlUruLulldRlDlddRdrrUUruuruLdddrUdllddlluRlURUR") + +(defmaze + "#######" + "# $. #" + "#@*$ $#" + "#.* . #" + "# $ .#" + "### #" + "#######") + +(add-solution + "ddRRuruurDDllddrUllluuurRDDLdRuurrdLLddrU") + +(defmaze + "#######" + "# .$ #" + "#. @* #" + "# $ #" + "#$**$.#" + "#..$ #" + "#######") + +(add-solution + "drruLLullddDuRRuLrrrdddlLUUdRUlluurDDrruuL") + +(defmaze + "########" + "#. ## #" + "# $ #" + "#*$ $. #" + "# $.#..#" + "#@$ $ #" + "# # *.#" + "########") + +(add-solution + "uUUdddRRuuLrRurrddddLUruuulldlddRRlldRlulluRuuurDrrrddDuuulldRurDllull" + "dRR") + +(defmaze + "#######" + "# * #" + "# $ .#" + "#.# * #" + "#@.$$ #" + "# $ . #" + "#######") + +(add-solution + "dRRUlluuRRurrdddLLLdlUrrrruuulldDuurrdddlLuuR") + +(defmaze + "#######" + "# ##.#" + "# $$ $#" + "#. .. #" + "#$ * #" + "#@* #" + "#######") + +(add-solution + "RuRurrddlUlluluurDldRdrrruUlLDlluurDldRddlUruurrrdddlL") + +(defmaze + "#######" + "# . #" + "# .@$$#" + "# * * #" + "# $ .#" + "###.$ #" + "#######") + +(add-solution + "urrDLLddrrULululldddRRUrrddLUluUrurDDullddlluuurR") + +(defmaze + "#######" + "## #" + "#..$ @#" + "# $ **#" + "#$*$ #" + "#. . #" + "#######") + +(add-solution + "lulldRdDuulldDRUruurrdDLddrUluLLddRlulUrrrdLuuurD") + +(defmaze + "########" + "# * .#" + "# * #" + "# . #$ #" + "# $. #" + "#@* #$ #" + "## $ . #" + "########") + +(add-solution + "RdRUUluuRurrdLLrrrddlUdLLdlluurDluuuRDrrRdrdddlUruuUlluLdllddrrUdddR") + +(defmaze + "#######" + "# @ #" + "#$* **#" + "#. #$ #" + "# . $ #" + "# . #" + "#######") + +(add-solution + "rrrDLullDDlddrrrruUdLdllluurDldRuuuulDrurrdLrDrddlUUdL") + +(defmaze + "########" + "# ..@$.#" + "#. $ #" + "# $ $ #" + "#.# * ##" + "# #$$# #" + "#. $ . #" + "########") + +(add-solution + "ddLUllddddrRUUUruuLrRdrdLdLUlUllddddrrRUdllluuuurrdLulDrrrruLLLrdDDrdL" + "L") + +(defmaze + "#######" + "#. #" + "#.$$$ #" + "#. * .#" + "#@$$*$#" + "#. $..#" + "#######") + +(add-solution + "uuurrrrddDuuullllddrRRUdllluurrDrdLuullddddrRUULrruruLLLrDLdDrdL") + +(defmaze + "########" + "### * #" + "# $ @#" + "# #. #" + "#* $* #" + "# * .* #" + "## * #" + "########") + +(add-solution + "lLLddddlUruuurrrddddlLuluulluRRRldddrdrruLruulDruuulDllddRldldRuuulD") + +(defmaze + "########" + "#. $ #" + "#.$##$ #" + "#$ $. #" + "# $#.$.#" + "#. # #" + "### @.#" + "########") + +(add-solution + "llulluUrDldRRdrrruuuuullLLDDDuuurrrrdddddllluLrdrrruuulldRurDDuuuulDDl" + "dRuuulllddRlddrdrU") + +(defmaze + "########" + "# .## #" + "# $ @#" + "# **$ #" + "#*.. # #" + "# * $*#" + "# * #" + "########") + +(add-solution + "lllullddrdrUUddrddlUUrddrrULLdlUluuluurDrrDDLddrruLuuurrdDuLullDulldR") + +(defmaze + "########" + "# . #" + "# $##$ #" + "#*$ .#" + "# *$@ #" + "##$. # #" + "# . . #" + "########") + +(add-solution + "ulDDldRuuulDllURRRdddllUdrruulDuulldRurDrrruuullllDDldRuuulDrdrrRUruLL") + +(defmaze + "#######" + "# @ #" + "#$* * #" + "#. *$ #" + "# . $##" + "# . #" + "#######") + +(add-solution + "ldDuurrdLrdLuulllDDrddrrUUddlluuRDluluurrDDlddlUruruurrddLdL") + +(defmaze + "########" + "#. .$ .#" + "# $ $$#" + "#@ $## #" + "# *$ $ #" + "#.* .. #" + "## *. #" + "########") + +(add-solution + "ddRUddrRuuLDldRluluuuurrdDDLruuullddDrrrdrruuULLrrdddllulldRRlluluuurr" + "DDDldRuuuLDDluUrrrruLrdrddLLL") + +(defmaze + "#######" + "# #@#" + "# $$ #" + "# # $ #" + "# . ..#" + "# # #" + "#######") + +(add-solution + "dddlllluururDDullddrRdrruuuLrdddlluRllluururDDullddrRdrrULLuurDurD") + +(defmaze + "########" + "# ##" + "# .*.$##" + "# * . #" + "#* . $##" + "#.$$ $ #" + "#@$ . #" + "########") + +(add-solution + "uUrUdlddRUUrrddrruLdlULuurrDLuuullldDuurrrrDDldddrruLdlUUUrDlddrruLdlU" + "UdlLdRR") + +(defmaze + "########" + "# *@ #" + "#. #$. #" + "# *$ * #" + "#$ . $ #" + "# .$# *#" + "# $..#" + "########") + +(add-solution + "rdddDldLLUluURDrRUrDlddllUluurRdLulluurrRDDldddrruuLrddllulldRRRllluUU" + "rDurruullDurrdddrruuuL") + +(defmaze + "#######" + "# *.#" + "# *$$ #" + "#. @#*#" + "# . $ #" + "# $. #" + "#######") + +(add-solution + "lluurrDLddrdrruUULLulDDurrrdddlluUddrruuulLddRdrUllullddRluurruullD") + +(defmaze + "########" + "# * #" + "#.#$$#.#" + "# *@ #" + "#$*. *$#" + "#. .$$.#" + "# $.#" + "########") + +(add-solution + "ruuLLLDDlDurRdLuuurrrddDLruuulllddlluuRRdddddlluUUrrrRdrUdlLuluuRDldll" + "dddrruLrdrRUL") + +(defmaze + "########" + "## ...#" + "#.$$* .#" + "##$.$$ #" + "# * $##" + "#@ $*.#" + "# $ *.#" + "########") + +(add-solution + "rruuULuRdddddrRllulluRUruuRRdLullDDDlddRRuUrUUddlluuurRdddlddRURlUUUrr" + "dLDllluuRRRddlUdddllU") + +(defmaze + "########" + "#@# . #" + "#.$$#. #" + "# $ *#" + "# #$$. #" + "#$ $ .#" + "# ..#" + "########") + +(add-solution + "ddrRRDDLdRlllURRRuulDDrurrULuurDDDluuullDDlluRdrRRuullDldRRdrUUddldlUd" + "llUUrRRdrUdlddRUllldRR") + +(defmaze + "#######" + "#. #" + "# $$$@#" + "#. # .#" + "# $$*.#" + "# $ ..#" + "#######") + +(add-solution + "ullllddddRRRllluuuurrrrddlDruuullllddrUdlddrURRuruulDDuulLdRRurDlllDld" + "drruLdlU") + +(defmaze + "#######" + "# ##.#" + "# $$ $#" + "#. . #" + "#$$* #" + "#@. .##" + "#######") + +(add-solution + "rrruullluurDRdrddlllUURRDullddrRuuluulDDrrdrruULLdlluurDldRurrrddlldll" + "UdrrurruulDrdLuulldD") + +(defmaze + "########" + "# $. ##" + "#* # $ #" + "#.*. #" + "##.$##@#" + "# $$ $ #" + "#..$. #" + "########") + +(add-solution + "ulluurDldlLuuRlddrrurrddddllLLUUddrruLdlUrrdrruuuulldlDDldRRluuururrdd" + "dLLrruuulldldDrdLrurrdLruuuLL") + +(defmaze + "########" + "# @.$ .#" + "# $ ##" + "#.*$# #" + "#$ $.$ #" + "#.* . ##" + "## * #" + "########") + +(add-solution + "rRRllllddDrRUUdddrrULdlUlluuurRdrrDrdLdlldlUrrruuullDDuuulldddRdRUlluu" + "urrdrrddLLrruullDLDRuuulDrrruL") + +(defmaze + "########" + "# #####" + "# .####" + "# $$$ #" + "#.$ $.#" + "#$# #.#" + "#@. * .#" + "########") + +(add-solution + "rrRRluuRurDlllURdddlllUURlddrrruuulDllURuulDDDrrruLrdrruLdlllluurDldRR" + "RRuLLdlluurDldRurrdddlllUdrrruuulldRDrdLuuurDD") + +(defmaze + "########" + "# . $ #" + "# $ . #" + "# $#$@#" + "#*# * .#" + "# .$##" + "# * .$.#" + "########") + +(add-solution + "ulllDDRddlUllUUrrDuurrrddLLrruullldllddrRdrRUdllulluurrDrDulullddrRuuu" + "ullDDrrurrrddLUruuLLdRurDDlulldlluRR") + +(defmaze + "########" + "# . #" + "#$$ @$ #" + "#.$# $ #" + "# $.# #" + "# .$ **#" + "#. ..$.#" + "########") + +(add-solution + "urrdLrddlUlUlullDDDRddlUrdrrRUUruuulLdlLDDDldRRluuuurrurrdddldlLrruruu" + "ulldlluRdlddDldRuuulDDrrrruruuLLLulDDDuuulDrrrrDDuuuLL") + +(defmaze + "########" + "## @ #" + "#.#$##.#" + "#$ $ #" + "# #.**$#" + "# *$ .#" + "#. $.#" + "########") + +(add-solution + "rrddlLLdDRdLuuurDurrDLulldddrRUULrddlluRuulDrrruuulllDDrdddrUdllLuRRuu" + "lDuuurrrddLLrruullldDrdddlluluURRuurrrdddLruuulllddRRdrUlllllddrdrrrU") + +(defmaze + "########" + "# ## #" + "# $ @ #" + "# #$#..#" + "# $ #..#" + "# $ * #" + "# # * #" + "########") + +(add-solution + "rrddddLUUruulllullddddRRRllluuuurrdrrrddddlUruuulllDDuuulldddRdRRRdrUU" + "dllllluuuurrddDldRRRdrUllllluuuRurDDDldRRldR") + +(defmaze + "#######" + "#. $@#" + "#$$ $$#" + "#. .$.#" + "#.$*$.#" + "## . .#" + "#######") + +(add-solution + "DDLLDLdRuuuullDRDrrruuLLDldRRlddlUrdRUluuurrdLulDDDrUluurrdLulDlluRRdr" + "ddllUdrruulDuulldRurDrruLLL") + +(defmaze + "#######" + "##. *@#" + "#..$*$#" + "# $ #" + "#$ $*.#" + "# . #" + "#######") + +(add-solution + "LLDurrDLLrdDrUdlLdllURRUruulDDrrddLUUluurrDullddrddLUlldRRuruUlDrdLdll" + "uURRdrrdLLuuurrDullddrUllldRR") + +(defmaze + "#######" + "#.. * #" + "#.#$$ #" + "#$ $ #" + "# .$*.#" + "##. $@#" + "#######") + +(add-solution + "uuuuLLLrrrddLLUdrrddLLUUdllURRddrruLLrruuulLDDRluurrdDlddlUUlldRRurruu" + "llDurrddlUdLdlluRRddrrULLuurDurD") + +(defmaze + "########" + "## .#" + "## $$*.#" + "#. * $$#" + "#* .# #" + "#@$$$ ##" + "#. .* .#" + "########") + +(add-solution + "drrRRuurUUddlddlllluUruuurrDRlulldRlddrUluurrrdDLLdllddrrrruUruLuullld" + "DrdLDuuuurrrdddddllLuurDldRluuuuurrrddddLruuuullDRllddrDluuurDlddrrruu" + "L") + +(defmaze + "########" + "# # #" + "# $@$ #" + "# $#* $#" + "#.$ *.#" + "# $ # #" + "#.... ##" + "########") + +(add-solution + "urrddDllddrrUruLuuulldRurrdDldddlllluuuuRRllddddrruuLrddlluRdrrruuuruu" + "llldlDDDldRRluuulDDruuururrrddldLLDlluurDDuuururrDulldRDuurrddLdLLLuur" + "rurDD") + +(defmaze + "########" + "# #" + "#$@*$$##" + "# $ $ ##" + "# $.#..#" + "# ..*$.#" + "#. #" + "########") + +(add-solution + "ulDDDDrrdrrruuluLrdrddlllluluuururrDLullddddrruUddlluuRDluuurDRllddrUd" + "rUdddrrruuluLLdddrrUdlluRRdrUllluurrDullddrRllulldRRlluuuurrDDDuuurrDD" + "uLulDDuulldRDD") + +(defmaze + "#######" + "### .#" + "# $$# #" + "# @$. #" + "#. $# #" + "# . #" + "#######") + +(add-solution + "ddrrruulLrruullDurrddddlllluuuRDlddrrrruulLLrrruullDldRuurrddddlllUdrr" + "ruuuullddRlullDRddrrruUUdddllluuRDldR") + +(defmaze + "########" + "## # #" + "# $ $ #" + "## ** #" + "# $ #" + "# # #$$#" + "#...@..#" + "########") + +(add-solution + "luurUrrdDulllddlluuRRluRuulDDrdddlluuRurDllddrrrrUruulLrrddldlllluurrD" + "uluurDrrrddldlLLrrruruulllDDuurrrddldlLuuurrDDuLrruuulDLdlDDuluuurDrrr" + "dL") + +(defmaze + "########" + "# ##" + "#.#.* .#" + "# $$$ #" + "#*. $* #" + "# #@#" + "########") + +(add-solution + "uuluulldDRluullddRddrrULUlluurrDurrdLrrddLLURdrUluullllddrRRllluurrrrd" + "DlddlllUUddrrULrrurrdLLdlluuRlddrruLrruuullDDRluurrdDlddlUU") + +(defmaze + "########" + "# ##" + "#@$$ $##" + "# $ ##" + "# *## .#" + "# ..*$.#" + "#.# #" + "########") + +(add-solution + "dddrrdrrruuluLrdrddlUdlluRRlllluuuurrrddrDuluulllddddrrrdrrULLLLrrruul" + "uurDDDuluullldddDrrrRlllluurDldRRlluuuurDDDldRuuuurrdLulDDDuurrdLulD") + +(defmaze + "########" + "# . $ ##" + "## $.$ #" + "#...# .#" + "# #$ $ #" + "# $ #.$#" + "# @ #" + "########") + +(add-solution + "luuurrDulldddrrrruUruuLDDlluluurDldldddrrrrrUUluuuLrdddrddllllluuururR" + "urDrDDlllUluuRlddldddrrUUrrruullLulDrrruLLrrdrddlUruLddlldLdlUUdrrdrrr" + "UU") + +(defmaze + "########" + "## * .##" + "# .$ #" + "#.# $ #" + "#. *$# #" + "# $# #" + "# ##@##" + "########") + +(add-solution + "uruulLulluRRddrrddllULUdrdrruulLuulldlddRRlluururrdLrdrrddllUlURuulDrd" + "dlllddrUluuuRurrdddlLdlUrrruuulldRDrdLLruuurDlddrdrruuuLLDlUrrrdLLulDr" + "rrddllUU") + +(defmaze + "########" + "#... #" + "# #.## #" + "# # #" + "# $ *$#" + "## #$..#" + "# $ $$ #" + "# @ $ .#" + "########") + +(add-solution + "rRRULUUluuurrrddlLrrDLDlUdddllURdrrUrULuurDlllURdrruuullllldddRDuluuur" + "rrrrdddllulUdrdrruuullLLrrrrddLLrddddlluRUUdddllluRuuRUUddldddrruururu" + "uullLrrrddlLrddlUlUUddrruLddddrUUlulUdlddRRdrU") + +(defmaze + "########" + "# ..# #" + "##$$ #" + "# @ $..#" + "# #$*$ #" + "#.* $. #" + "# # #" + "########") + +(add-solution + "rRurrddddllluRdrruuuulldlDururrddddlluURUrDllluRdddlUruulllddRRUruLruu" + "lDrddrruuLDldlddrrrUULulUlDrrdrddlllulluuRRuulDrrrddrddllluUUUdddlluuR" + "urDDuurrddLrrddllULLrrdrruuluulldDuurrddrddlluLuuR") + +(defmaze + "########" + "# @* #.#" + "# $$ $ #" + "# # #*#" + "## . #" + "# $.# #" + "## * .#" + "########") + +(add-solution + "lddrdddrRlluuuluurDDDrruuuLrdddlluuRurDllddrrrrUULLDurrddlLddllUURRuur" + "rddddLLuuRlddrruUlllldRldRRRllluuUluuRDDDrruuuLrdddDluluuRurDDDlddlUUU" + "luRRurDDullluR") + +(defmaze + "########" + "# .$ #" + "# *$$. #" + "# $##" + "#*$. $.#" + "# .#$ #" + "##@.. ##" + "########") + +(add-solution + "ruuulluurDldRDrddlUlUUrDuuurRDLulDrrrruLLdllDlddRUrrRUdllURdllluRuulDD" + "rdrruuLrurrdLLddrUluurrdLulDrddlllddrrrUUllDldRluuuluurDRDDDuuulldRurR" + "urrdLLLDDrrULulD") + +(defmaze + "########" + "# # #" + "# @*.* #" + "# #$$$ #" + "#. * .#" + "#.#$$$ #" + "# . . #" + "########") + +(add-solution + "lddddrrrrruuuuulldLrurrdLrddddllllluurrRRUrDlllURdrruuullDDldRuuulDrdd" + "llluuRRDrdLuullddddrrrUdllluuuurrddLruuurrrddLLrruullldlldDrrDrUllluur" + "rDuurrrddlLdLLrUrrrdLullddrdrrUdlluluurrdD") + +(defmaze + "########" + "# $. .#" + "# .$. #" + "# # $#.#" + "#@$* $ #" + "#.$ #$##" + "#. #" + "########") + +(add-solution + "uuuRRRdLulldddddrruUUULulDDDDuuurrddLruuruLrdrruLrdddLLLddrrUdlluuuull" + "dDRluurrrrrddLddlluUUdlluurRRRurDlllddddlUruuullddRdrUUdlluurRuRRdLLdd" + "lluuuRldddrrddrruuLU") + +(defmaze + "#########" + "## $. .#" + "# ## #$#" + "# $#. ..#" + "# @## .#" + "#* $$ #" + "# # $ #" + "### # #" + "#########") + +(add-solution + "lddrdrruuruuluurrDDlddlddlluluurDluluururRRddrddlLLrrddllUllUUrDRddrru" + "urrdLuuurDluluullldDDrdRRllddrrUrUUruuuLrdddlddrUUUUdLLrdddldlluurRdrU" + "UdlllullddRluRRRRRdrUUddlldllUluuuulDDrdRRRRdrU") + +(defmaze + "########" + "## . #" + "# #$@$ #" + "# $. *$#" + "# *.$ #" + "# . #$.#" + "# #. #" + "########") + +(add-solution + "ddLruuurrdLrDDLUlldRurruulllDurrrddllUdrruulDlddlddrrrUULrULuurDllluRd" + "rddrddllluuUdddrrruulLruulDrdrddlllulluuRRRurrDDlUllllddrrdrrrUdlllull" + "uurDurruulDrdrdDrdLLruuurDuuuLD") + +(defmaze + "########" + "# # . .#" + "# $ # #" + "#. $# $#" + "# $@*. #" + "# #$ .#" + "# $.###" + "########") + +(add-solution + "RdrruUlDrdLullUlldRRRRuuullDDuurrdddlLulldddrRUULrrruuulldDuurrdddlLul" + "luRdrdrruuullDurrddrDlllddlluURuururrrDldddLruuuulldlddRRdrUUUruLdddrU" + "UddlllluurDldRRlllddrrUdlluurR") + +(defmaze + "########" + "# . .#" + "#@$#$ #" + "# .$ $ #" + "# $ # #" + "##*$# ##" + "##... ##" + "########") + +(add-solution + "urrrrrdddlUruulllllddrRRRdrUUdllllluurrrrDrddlddllUUddrruuruulullllddd" + "RluuurrrrdrddlddlllUrdrruuruulullllddrRDDldRuuulldRluuurDDDDuuuurrrdrd" + "dlULLDDluluurDDuuurrrDrdLLLrU") + +(defmaze + "#######" + "# .#" + "#@# $ #" + "#* $##" + "# #" + "#$$##.#" + "#. *. #" + "#. $ #" + "#######") + +(add-solution + "urrdddrrddlLdlluRUUlDruruuurrdLullldDRdrrUUddlluluurrRddLdldlUrdddlUru" + "urruuulDDrdrdddLLLuuulURddddrrruuulLUlldRddRRdrUllllUruurrdLulDDldRRlu" + "urruuulDDrdLulDDldRuuulDDruruuullD") + +(defmaze + "########" + "# # #" + "#.# $* #" + "#$$ * @#" + "#. .$.##" + "# #$.##" + "## #" + "########") + +(add-solution + "ldddllluuruuulldDRdrUdlddrrruuuLrdddllluurRlluluurrrDDrDLuuulllddrdddr" + "rUUUdddlluuuRldddrruuLulDrrruLdlluluurrrDDuulllddrdrRddllUlURddrruuuuu" + "llldDrRlluurrrdDllddlUUrrrDLLrruuulDDldddrrUU") + +(defmaze + "########" + "##@ .. #" + "# #$#. #" + "# ..*#" + "##$$ $ #" + "# $ $ #" + "# # .#" + "########") + +(add-solution + "rrrddlddRUdlLdlluRRRuulDrrrULuullDDRluurrdDlddLUUdddlluRdrUruullDRddlU" + "ruurrrdDLLLuurruurDDlllddrrUUlldRdldlluRdrUruullDurrrruulllDurrrddlUru" + "LddlddrrUdlUUUdddlldlluRuRRdrUUdllluRRdllddrUUluR") + +(defmaze + "########" + "#@$. $.#" + "# $ $.#" + "# $$ $ #" + "#. $.#*#" + "###$*. #" + "# . . .#" + "########") + +(add-solution + "dddrRDRdLuulluurRDrDLddrrruUULLdDldRuuurrddLLulLURRluurDlddrddlUUluluu" + "RDrrDDlUdddrUrruuLLuuRDldDllURdrUdlddrUrrdLruuuLLDldRRdrUlluuruulDDDld" + "RldRRlluululuurDRDrruulDDDDuululldRRurDDulldR") + +(defmaze + "########" + "## ## #" + "# $@$$ #" + "#.# #" + "#.#$## #" + "# $. #" + "# *. .#" + "########") + +(add-solution + "drrrdddlllulldRRRRuruulllDDldRuuurrruulDrdddlLLuuuRdlddrrruuLLrrddllld" + "lluuuuRRDrrrddlllLdlUUdrrrrruulllDurrruulDrdddllLLruuuRdlddrrruuLLulDD" + "urrrddllLdllURRuurrrddldLLrruruuuulDrdLLulDDDR") + +(defmaze + "########" + "## # #" + "# $$ .#" + "# $@$###" + "#.#$ #" + "#.* ## #" + "#. . #" + "########") + +(add-solution + "DrrrddllllluuuururDRRllllddddrrrrruulllUdrrrddllllluuuururrdDuulldlddd" + "drrUURuuLrddlUdddrrruuLLulDrrrddllllluuuRldddrrrrruulllDuruuullDlddddr" + "RuuruuLrddlULrruullDlDDDuuururrddlLulDDuruurDrdLLulD") + +(defmaze + "########" + "# $. ..#" + "#.$.$$ #" + "# .$ #" + "### ###" + "#..* $ #" + "#$$*$ #" + "#@* .##" + "########") + +(add-solution + "RUdRRULUUrDluUlluuRRDuRRDLulllddrUluRRRdLrDLddrUUluullddRluurrdDrddlUU" + "lluurrrDDurrdLLLddrUdlddllURdrrUUlDrdLuuuuRuulDDDDrUUluullddRluurrdDrd" + "dlUUlluurrrDDurrdLLLddrUluRuulDDDuuullddRluurrrdddlUULrrrrdLLdddrruLdl" + "UUUruL") + +(defmaze + "########" + "# #@ #" + "#. ** ##" + "#. # #" + "# $$ #.#" + "# $ ** #" + "# .$ #" + "########") + +(add-solution + "rrddrdddlLUlLdlUrUdrrdrruuullDLruruulDLrrdrdddllLuurUdldllURdrdrrruuul" + "uulldLDDldRuuururrddldLruruulldldDrruruLrdrdddllURdrUllUlllddRURRdLruu" + "UruulDDDldlluRuuRurrddldLruruulldldDrruruLddlddrUUUdllldRRlldR") + +(defmaze + "########" + "#. . ##" + "# # $ #" + "#$*$##@#" + "# $.# #" + "#. # $ #" + "## . #" + "########") + +(add-solution + "dddlluuLrddrruuuuLulldDuulldDRDuluurrrrdrddddlluuLUUddrddrruuuulLrrddd" + "dlluulullDRluuurRDrrrddddllllUUddrruuLrddrruuuulllDLrurrrddddlllluUlUU" + "dRdddrruuLrddrruLdllluUrrDullddrRurruuulllDurrrdddlldlluuRlddrrurrdL") + +(defmaze + "########" + "# ..# #" + "# $ $ #" + "#*$#$ #" + "# @$.*##" + "# #. #" + "# . ###" + "########") + +(add-solution + "lddrrruuUUlulldDDrRlluuurrdrdDllluuRlddrUUddrruuLrdrruLLddlddrUrUUlDrd" + "LullluuuRDDldRRRuuLrdrruLLdddrUlllluuurDDldRRRuuLrddllluuurDDurrddddll" + "lUUUrurrrrdLullldldddrrrurUdldllluuururrDDlDurrdLuuurDlulldldRRluuulD") + +(defmaze + "########" + "# .$ #" + "#$@* #.#" + "# **$ #" + "# $.$$#" + "#.#. #.#" + "# $ .#" + "########") + +(add-solution + "DldddRRRRluuULDrddllluuRluRuulDrddlddrrruuuLrrruuLLLDllDDrURRdLuuurrrd" + "dDLruuulllddrRdrUllluurDlddRddlUUUlluuRRDrDDuLdddllUURlddrruUrurrdLLuu" + "lulldRlDDrURRllluurrDrdLrdLddllUURlddrruUruulDDrrruLLdlllddrrrUdllluur" + "rRurrdLulululldRlDD") + +(defmaze + "########" + "#@$. #" + "#$*$ .#" + "#.$ *#.#" + "# $ $ #" + "# #$..##" + "#.. $ #" + "########") + +(add-solution + "DDRluuRDRRDDLUruurrdddLddLLURUUlDrrruuullLDlldDDuRUdRRuLuurDlddlluuuRl" + "dddrruuLrddlluRurrurrdddLLLUluuRRdLddrrruuuLrdddllluurRurDlllddrUllldR" + "uruullDRddlUrrrdLuluurDldRdrddlUUUlldRurDluuulDrurDRRuLLdlddrUdrddlUUl" + "uuRurrdLDDlluuluRdddrruuLrddlluR") + +(defmaze + "#######" + "###.###" + "# . ###" + "#.$*$.#" + "#.. .#" + "#*#$$$#" + "# @$.#" + "##$$ #" + "# #" + "#######") + +(add-solution + "llUUrrURdrDDLLURdrUluulDllddRRUruulUllDRdRddlluUrrdrrdLLuuluurDrDulldR" + "ddrddlUUUUllddRluurrdDrddllUdrruuluullddRddrruuruLdddlluuRlddrruLulluu" + "rrDrDLuuluurDrDDlUddddrrULdlUUUrDuuuLDllddRRddlUruUruulDllddRdrdrruLdl" + "luuluurrrdDuulllddrRUruulullDDrUrrdLLrddlddrUUUUruLLrdddddrruLdlUUUUrd" + "rDLddrUllUUruL") + +(defmaze + "########" + "## * *.#" + "#..$ $*#" + "# .# *.#" + "## $ $##" + "# #$ $ #" + "#.. $@#" + "########") + +(add-solution + "LLLLrruuuuLLddRDrdrruLLUlluurrDRDLuuuRDDldddrruLdlUUUrDuuulDllddRRddLU" + "ruUruulDllddRdrdrruLdlluuluuuRdrrdDuulllddrRUruLLulDrrruLdddlddrUUUddd" + "rruLUUULLrddldRdrUU") + +(defmaze + "########" + "# . $@#" + "#.#$*$$#" + "# . * #" + "#$$ $$.#" + "#.# # #" + "#. . .#" + "########") + +(add-solution + "DDLDDrdLuuurDuuuLLLDDRRlluurDurrdLddddLLLruUURllluuRRRDrDLLdddrruULulD" + "ruuulDrrruLdlddrrULullullddDRRRUdllluuurrdDLdlUrrrruuLrddldLuuRdrrdLdd" + "llUURlddrruUluulDDrrruLdllulldRRuururrDLdLLuRdrdddllUURlddrruUluulDDll" + "uRRdrrddllUdrruulLulldRRuururrdLDDrUlLLdddrrrUdllluuuuRdrdDrdLuuulldll" + "uRdrRurrDDlUluuurrDDuL") + +(defmaze + "########" + "# . $@#" + "#.#$*$$#" + "# .$. #" + "#$$ $ #" + "#..$# .#" + "##. * .#" + "########") + +(add-solution + "LLLDDlDurRdLuuurrrDDDLruuulllddrRlluurDurrdLddddLLUUURllluuRRRDrDLLddd" + "rruULulDruuulDrrruLdlddrrULullullddDRRRUdllluuurrdDLdlUrrrruuLrddldLuu" + "RdrrdLddllUURlddrruUluulDDrrruLdllulldRRuururrDLdLLuRdrdddllUURlddrruU" + "luulDDlluRRdrrddllUdrruulLulldRRuururrdLDDrUlLLdddrrrUdllluuuuRdrdDrdL" + "uuulldlluRdrRurrDDlUluuurrDLrDD") + +(defmaze + "########" + "# . #" + "# # $* #" + "#.. .$ #" + "# $$.$ #" + "#..$#$*#" + "# *@#" + "########") + +(add-solution + "UUULLLLDlUrrrdLrurrdLulluurrrDulllddrrUdlluurDrddrddLLLUUURurrDDlUlldd" + "drrUULullldddRRRluUruLruulDrddrruLruuLDllullDDDRRRUdllluuurrdDrdLddllU" + "UURldddrruuLulDrrruLuullDurrRDrrddLU") + +(defmaze + "#########" + "# #.# #" + "# $$$.#" + "#$$$$ #" + "# $@# #" + "#. ###$##" + "#..... .#" + "#########") + +(add-solution + "LUUllDRDDldRRRRRUUruuullDLLrrurrdLrddlddlllluuulDrrrULdlddrrrruuULrruu" + "llDRddddlllluuruuRRurDlllddrUluRRurrDLDLLrruulDlddllluuRRRddllddlUUrrr" + "uulDruRurrdLdLLrruulDlllDDlddrrrrruUUdddllllluurDldRRRlluuuurrdLulDDDl" + "dRRluuurrururrdLdLLLulDDDldRuuuulDDDruurrdLrurrdrUluulDrdLLLLulDDurDD") + +(defmaze + "#########" + "#.. .$@#" + "#.##$#*$#" + "# # .* #" + "#$* .$$ #" + "# $ $.#" + "# ## # #" + "# # #.#" + "#########") + +(add-solution + "LLLLLrrrrrDDLUrdDDDuLULLDRurUruuLLLLrDDRRdrUllluurrDDlddlUUrddddlUUruu" + "rrddLruuluurDDlldDlddrUUrUUllDDrUdllllUUrDldRRRuLrrruruulllDDRdrdrUllL" + "dRddlUUrurrdLululuurrrdDDllDlddrUUruruuulllddDDrruruLUruLddddlluRdrUUd" + "dllllluurDRRRdddlUUlulldRRuRDrrULLLrrdddlUU") + +(defmaze + "##########" + "## . #. ##" + "# .*...# #" + "#$ $ $# #" + "#. ###.# #" + "# # #" + "## # $## #" + "# $*$$ $ #" + "##@ #" + "##########") + +(add-solution + "UUUUURRurrDLulullDRRRdrUllldRlullDRdddddrrULrdrruLLdllUUUUUluRdddrrrDu" + "llllUruuurrddLUrrrdLLullDDldRuuulDrdddddrruLdlUUUUUluRRRRllldddddrrdrr" + "uLuulLrrdddllluuUUUluRRRdLulDDDrrrdddllluUUUUluRRdlddrrrddLLdlUUUUUluR" + "dddrrrddrdrruLLLLUruLLrdddlluuUUU") + +(defmaze + "########" + "#....*@#" + "#$# ***#" + "# $ # #" + "# $ *#" + "# $$ .#" + "# ##" + "########") + +(add-solution + "LDDrDuluurDldDlLuuuRldddrruuLulllDDDRddrrrUUlLrrddlULuuUrrDDLruulldDrd" + "dlllUUUUdRldddrrruulUlldRlddrURlluurrDrruuluLDrrruLLdlDllddrdrrrUUUddd" + "lllluuurrururrdLddddlUdlluRRdrUUUUruLdddrUdldlllluurrDRdrUUUddllulldRR" + "RRllldRRdrUUU") + +(defmaze + "#########" + "#@*.*. #" + "#*...* ##" + "# $#.# #" + "# # #" + "# $$ #" + "## $$ $ #" + "# # #" + "#########") + +(add-solution + "DrrrRurDllluRdllluRdrrrrDDlDLLullUdrrdrrurrdLrddlUUddllURdrruuuulullll" + "DlddRdRRlluluuruulDDrurruLrdrrdrddddlllulluUUluRddrDllUruuRurDrruLrddr" + "ddlUUrddddlUdlluRdrruuullDLddrUdrruLUddlluRluLulldRdRRuLrddrrruulLrruu" + "lDrdddllluluuluurrrurDllluRdllluRRdllDrdrddlUUUUluRdddrddrdrrruuulldLL" + "dlUUUUrrrrDrddLLLLdlUUUluRRRllddrdrddrrUruLLLLdlUUUluRRlddrdrddrUruLLL" + "dlUUUluRddrdrrrruulDrdLLLLdlUUUddlUU") + +(defmaze + "##########" + "# #@$ ...#" + "# $ $ ** #" + "# $# .*.#" + "# $ #*.#" + "# $$ #.**#" + "# # #" + "##########") + +(add-solution + "RRdddLddrrrrULrUULDrddlllluuruRluuRDlddlddrrrruuuULDrdddlllluuruuRlddl" + "ddrrrruuulLrrdddlllluuLUlldRlddrURlluurDurDrrUruulllDDuurrrddlUruLdddl" + "LulldRlddrUURuuRRddLrurrrdddllllULrdrrrruuullluurDllldDlluuRRRRddLddrr" + "rruuulLrrdddlllluuLuurrurDlllddrrURuLddlddrrrruuuuLrddddlllluururRurDD" + "ullluurDldRRurDllldlluuRRurDldRRllullllddRUluRRRRurDllldldlddrUUUluRRR" + "RRldRldldLUUluRRRurDlddllllddrUUUluRRRRlluRR") + +(defmaze + "###########" + "# #" + "# $ $ $# #" + "##### # ##" + "## ##$ $@#" + "# ..$ ##" + "## #..# #" + "# #..# ##" + "# $*.# #" + "# #. $ # #" + "###########") + +(add-solution + "LdlLLddddlUUruuLLulDDDlddrURRuruullldDldRuuurrrddlUruLddddrUUluuLulDDD" + "lddrURRuuulldDldRuuurrrrrruuuulllddrDuluurrrddddlLLLddrUdlddrUUluuLulD" + "DDlddrURRuuulldDldRuuurrRRuuluurrrdddLruuulllddrDrDDuLLLddrUluRRurrddl" + "UllddlddrUUUluLulDDDlddrURRdrUUluulldDldRRluuurrRRuuluurrrddddLLLLddrU" + "luRddddlUUruulLulDDDldRRluuurrrddddlUruuuRuuluurrrddddLLLLLulDDDldRRRd" + "rUUdllluuurrrrrruLruuulllddrDrdLLLLulDDDldRRRlluuurrrrrrdddldLLUdrruUU" + "ruLLLLLulDDDldRRRlluuurrrruuluurDDDrdLLLLulDDDldRRluuurrrruuluulldRRur" + "DDDrdLLruulullulldRRRRurDDDrdL") + +(defmaze + "###########" + "## # ## #" + "# #.*. #" + "# $ .*.* #" + "## $ $# .$#" + "# $ #..#" + "### $## *##" + "# # $@* #" + "# # #" + "## # # # #" + "###########") + +(add-solution + "LrdrruLUddlluRurUrUULuLrdrddlUlULLLddrUluRddlDlddrUUUruulDLDDrUluRuulD" + "ulldRRDrddlUlUdrrdddlUUrurUlLuurDDluulldRRdrDDlUlUdrruLuurDDlddddrURRd" + "rrULrUUruuLuurDDDulDDDlddrUUUUUddddlLLLdlUUUUrrdLDldRRRRdrUUUUdddllllu" + "uulDDruuuulDulldRRDrddlUlUdrrdddlUUruuLuurDDDDldRRRRdrUUUddlllluuuluul" + "ldRRurDDDDldRRRRdrUUdllllluUlURurDDDldRRRRdrUllllluuuuulldRRurDDDDldRR" + "RR") + +(defmaze + "###########" + "#@$...# ##" + "##****. #" + "##. .### #" + "# $ #" + "#####$#$ #" + "# $ $ #" + "# # # #" + "###########") + +(add-solution + "RRRDRRRurDrddLruulDDuullllullDRddlUruRRRRurDrddlLLLLUdrrrrrddLLLLUdrrr" + "ruuuullllLddRddrrrruulUrdddlUUddllluuRRDulllulldRRuuulDrddRddrRurruuuL" + "LLLrrrrdddlldlluuluUddlluRuulDrddrrddrruuLLrrdrruLUddldlluurRdrruuuLLL" + "LLLddRRddrrurUUruLLLLLrrrrdddldlluulluUddrrRRddlldlluRdrUUdrrurrdLLrru" + "uulDuulllllddrRRRddLLdlluRdrUUdrrrruuululllllddrRddrrrruLUUdddllluuRRl" + "lddrrrruuulDllllluurrrrurDrddddlllldlllluRRRdrUUdrrrruuuullllllddrRddr" + "rrruulUruLLLLLrrrrrddddlUUUruLLLLrrrddddllluuRRllddrrUrUUruLLLrrddddll" + "luurRdrUUruLL") + +(defmaze + "#########" + "#..... @#" + "#**# $$##" + "#. ## #" + "#*.$ #" + "# $ $# #" + "# $$ #" + "# # #" + "#########") + +(add-solution + "lDDDDrddllllURdrrruulullLDurrrrdddllluUluRRllullDRRdrddlUlURuulDrddrdr" + "rruuuuluullllDDrdddrdrrruulUrdddlULrruulDrddlllluuuulldRuuulDrurrrrdDD" + "rdddllllulUUUUluRdddlUrrDlddrdrrrruuullLLulDrrrruuulldRurDDrdLLLLulldR" + "uuulDruRRdrrdrddddllllulUUUUluRRldddddrdrrrruuulllLrrrrdddlllluluUUUlu" + "RdddlUUrddddlUUUrdddrdrruLULrddlUlUUUUddddrrrdrruuullLLrdLLdlUUdrUUrdr" + "rrrddLLLdlUrrrUruLLLLrdLLdlU") + +(defmaze + "##########" + "# # @ #" + "# $$ # $##" + "# $ $ $ #" + "# ## . #" + "# $#.**. #" + "## .... ##" + "##########") + +(add-solution + "DDDlUdDLdlllUluuRDluuurDRllddrUdrURRRddldlllUUrurrrdrrdLdLLuRdrUluulll" + "dlddrRRurrruuLLruulDDrrddlUUddlldllluururRRDullldlddrrruRurruLLuurDDld" + "dldllluururRlldlddrrruruUrrddLLrdLLLrruuuruulDDllldlluRRRRRDDrdLLrruru" + "uLulDllllluurDldRRRRRDDrdLruruuLulDlllluurDldRRRRDDrruuLDuulDDullluurD" + "ldRRRurD") + +(defmaze + "##########" + "# #" + "# # $$##.#" + "# $ $@##.#" + "# $$ #.#" + "## $$ $..#" + "# #....#" + "##########") + +(add-solution + "DLLuuurrrrrdddddlllURuLrddrruuuuulllDDDuuulldddRluuurrddLdlUrruurrrddd" + "ddlluuLrddlUUUlldRurDrddrruuuuullllllldddRRlddrUluluuurrrrrrrdddddlllU" + "LULrdrruLrddrruuuuulllDDDuuullDDRluurrrrrdddddlluulUdrddlUlLUUrDldRRdr" + "rruuuuullllDDrDrDRdrUUUddllulullddrRRRdrUUdllluulDldRRRRdrUllldRRllulu" + "uuurDDDldRurDldRluluuuullldddRRlluRRRurDDDuulDlddlUrRRurDlluuuulDDDull" + "dRdRRRRRllluulDldRRRR") + +(defmaze + "##########" + "#@$ ...#" + "##$#.*.* #" + "# $. #.##" + "# # #" + "# ## # #" + "# $ $ ## #" + "## $$# #" + "# # #" + "##########") + +(add-solution + "RDDlddrDluuurDuRRuurrdLulDrrurrdLddllULuurDldLdlluRuuRRddLdlUdlddrUUru" + "rurRurrdLddrdddlldllllUUluurrururRurDllldldlluRRdllddrUUddddrrrrurruul" + "ullUdddLLrruurrrdddlldlllluUluurruRuuRRdrDulullddldllddrddrrrrurruuuLu" + "uruLLrdddrdddlldlllluuluurruruRRurDllldldllddrrrruuUlldlluRRRuullDurrd" + "RRuLLddldllddrrrruuUluurrdLrurrdLullddlldlluRRRlluuRRRRRllllldddlddrdd" + "rrrrurruuluUdrdddlldlllluurrruuUUdllluurrRRldddRlddlllUUluRRRldlddddrr" + "UdrrurruulUllUUddddLdLdlUUUUluRRRldldddrruruuUdddlLdlUUUluRRluurrR") + +(defmaze + "##########" + "# # .##" + "# $ #...#" + "###$ *.*#" + "# $ ## . #" + "# ### ##" + "# $$ $ #" + "## #@#" + "##########") + +(add-solution + "uLuulUllululldRRurDlDRRRdrddLdlluRdlllURuUUruLddddlluuRlddrruUdddrruLd" + "lluluurrUruulDDDurrrdrrULLLLrrruulDrddddLdlllluluurrUrrRllldllddrUddrr" + "uLrdrruruuUUdlllldDuuruulDulldRRurDlDRRRdrddldlluRdlllURuUUruLddddlluu" + "RlddrruUdddrruLdlluluurrUrrrdrddLruuluurDDlulluulDulldRRurDlDDllddrdrr" + "uLUUURRRdrUllluulldRurDlddllddRdrUUUURRRdrruLdlUlluulldRurDlddddrdrrur" + "UdlLLdlUUUURRRRllluulldRurDlddlldRdrUUURRRlluulldRurDldRR") + +(defmaze + "###########" + "## # # ##" + "# # $ #" + "# # $ # #" + "#.* . #$ #" + "#****$ #" + "#@*..# # #" + "###########") + +(add-solution + "UURRRDRRRUrruuLulldRurDrddllUddlllulllddRURuuullDDRdrUdRRRdrUUrrdLLLLL" + "ullluurrrDrDululllddrddlUUrrRdLullddrUluRdrrRRRurrdLLLLLuurDldLLuRdrRR" + "RurrdLLLLLLulDrrrrrrruuulDDrdLLLLLLrruululllDurrDrrddrrruuuulldRDDrdLL" + "LLULuurDrddrruuuurDDDrdLLLL") + +(defmaze + "###########" + "# ####" + "# ## ##" + "# ## $ $ #" + "## $ #" + "##$.##$#$ #" + "##.*# ##" + "#..$ $####" + "#..... $@#" + "###########") + +(add-solution + "LLLLulLUlUUUluRddddrddlUrrrdLLulUUUrDDldRluuuUluurDDDDrdddrruurrrUruuL" + "DLLLLLddddrruurUdlddllulldRRuuulDuUUluurDDDDrurrRddrrUruulDLLddrrUruul" + "ulDrrddldlluuLuRdddlddrUUUUlLLdddRldlluRRuulDrddlluRdrUUluUUluurDDDDDr" + "ddlluRdrUluuuuuurrdLulDDDDDDrdLuuuurrrrddddlLrruulDrdLruuuulllldddrRll" + "uuurrrrddrruruulDLLLLLrrrddlDllluuUUluurDDDDDuurrrrrruulDrdLLLLLrrrddd" + "lllLuuUUluurDDDDDDrrrrurrUruLLLLLLrrrdddlllluuUUluRddrrruRdrruulDrdLLL" + "LLrrrdddlllluuUUluurDDDDDuuuuurrdLulDDDD") + +(defmaze + "########" + "## #" + "# # $ #" + "# $ ##" + "#.*#$ ##" + "#...$$##" + "# .. $@#" + "########") + +(add-solution + "LULLdlluuuRRururrdLullddlldddrrurrUUddlldlluuurrRDrddLLuRuullldddRluuu" + "rrrddlLdlUrrruullDurrddlLuuruurDurrdLLDllddrrUrULdddrUUluuurrdLulDDDrU" + "dddlUlluuRRuulDrdDrddlUlluuRururrdLullddldddRurruUddllluurRDrdLLdlUrrr" + "dLLruuuluurDDDrdLLruuuurrdLulDDDrdLruUluurrdLulDDDDrdL") + +(defmaze + "###########" + "###### ##" + "## ##$ ##" + "## # $$ ##" + "# ###" + "#. #$ # ###" + "#.#. # $ #" + "#...# $$#@#" + "# .. $ #" + "# ########" + "###########") + +(add-solution + "dLLLLLLuurUruLLrddldlluurUdlddddrUrrrrrUUlDrdLLLLuurururrDDuuUruulDDDl" + "luRdrUruullDDlddldlddrrruurUUddlddllluuruulldldddRRuururuuruurrddLdLLr" + "ruruulldDrruLddddlddrUUUUUllddldlddRRurrdrruuLrddllulldlluururuurrddDu" + "uulldRldldlddlluRdrrrururrrddllLuurDldLLLUllddrUluRluururRRurrDDDrrddl" + "LLLLLrrruurDuuuulldllldlddddrUluuururuulDrdrrRurDDDlddllllluuuuRRRRurr" + "dddrrddlLLLLLLdlUUUddrrrrruurDurrddlLLLLLLdlUUdrrrrrruuuuulldRurDDDDur" + "rddlLLLLLLdlUrrrrrruuuuuruulDDDDDDurrddlLLLLLrrrruuuuuuulDDldRurDDDDur" + "rddlLLLL") + +(defmaze + "###########" + "## #@....#" + "## $$.**#" + "## $ $$#.#" + "# $# # .#" + "# $ # ## #" + "# #" + "###########") + +(add-solution + "rrrrDDDllULUdrdrruuullDlLLdRluLulDDDlddrUUddrruLdlluurURDuurrdLulDrrur" + "rurrdLLLLdllldlddrrrrrrrrUUllUdrrddlllllllluururrrurRurrdDuulldRurDlll" + "ldllldlddrUdrruLUddlluRluRuRuRRRRRlllllulDDDlddrUdrruLUUluRRRRRllllddd" + "dlluuRlddrruUUluRRRdLruuRRRlddLUllllddrUluRRRuRRddlUdLLullddrUluRRRRdr" + "UdlllldlldRdrUUUluRRRR") + +(defmaze + "#########" + "#..$.# #" + "#....** #" + "# $.## #" + "## $ $ #" + "####$ $ #" + "# $ $ #" + "# #@#" + "#########") + +(add-solution + "uuLruulDruuulDLLuLLdldRuurrdLLrrrrrddlUrdddLUUruuLLLulldddRRRllluuurrd" + "rrrddddlLdlluRURuLdddrUrruuLUdDrdLLdlluRuuRlddRUrruulDrddLLuluRddrruLL" + "rruulDruuulDllulldRlddRUUddRRddrruuuullLrrrddddlluullluuuRDlddrrrdddll" + "uRdrUrruuuulllllddrrDulluurrrrrddLUruLLLLrrrrddddlUUddldlluRuRlulluUrr" + "rrrddlUruLLLLrrrrddddlUUUruLLLrrdddlluRdrUUruLLrdddllddrUluRddlllluRRR" + "drUrUUUruLddlldRdrUUU") + +(defmaze + "###########" + "# # #" + "# $# $ $$ #" + "# ##$#$ #" + "# $ #@#" + "# $## # ##" + "## # .## #" + "##$ #.*. ##" + "# ..*. *. #" + "# # .. # #" + "###########") + +(add-solution + "uuulDulldRlulldRDDDDDRdRldlUdlluRRRuulDrddlluRdrUUluuuuuurrdLulDDDDDDr" + "dLuuuuuurrurrdLLLulDDDrrUdlluurRddllDDDrddlUUUUUUdrruululldRdddddddllu" + "uulUluurDRRRuuurrdddLruuullddDDDDrddlUdlluRRlluulUluRRRRddDuuuuuurrddd" + "LruuullddDlllddrddrdrrULLdlUlUUUluRRRRDDDuuulllddddrrdrruLuuuuuuurrdLu" + "lDDDDDDDrdLuuuuuuurrddLruulldDDDDDuuuurruuurrddLruLLLulDDDDDDuuurrUruL" + "LulDDDDDuulllluuurDDDDDDurD") + +(defmaze + "############" + "#@##. # # #" + "#**..$# #" + "#. $..# # #" + "# $#.$#$$$ #" + "# ##" + "# ## # #" + "############") + +(add-solution + "DRdDldRuuulDDrdRRuuLrddlluluurDrrddlldlUUdrrrRRRRUUlDuuurDrrddLLUdrruu" + "lLddddrUlLLLLuurDluuurDDllluRdrruulDrdLddRUUddRRRuulDruurrddLLddrUlLLd" + "lUluuulldDlddrUUdRRRRRRuulDruurrddLLddrUlLLLLuurDldRluuulllDDrURurDlll" + "uRddddlUUrurrrddlLrruullldlddrUrrruulllulDDurrrrddlUruLuurDDlddllUluur" + "RllddrdrrrRRRuulDruurrddLLddrUlLLLLuurDldRluuUlllddrURurDllluRRdldddlU" + "UrurrrddlLrruullldlddrUrrruulllulDrrrrddlllUUluRdddlUrdrrrRRRuulDrdLLL" + "LLrruullldlddrUUUrrrddrrruuuulDDDrdLLLLLrruullldlddrUUlURRlddrrrrrruuu" + "rrddLLulDrdLLdlUUdrrrdrUluuurrddLLulDrdLLLLLLdlUU") + +(defmaze + "##########" + "# ####" + "# $$####" + "#.* .####" + "#$*$#*####" + "#@*... .##" + "#####$ .##" + "#### $ $ #" + "#### #" + "##########") + +(add-solution + "RRRRRdddrUdllluRRuulDullUUrrDDllllUURuurrDLDllddrrrrrdddlluRUruLuuLLrr" + "dddddrUdrruLLdlUUUrDldRluuLLUUrrDDrddlUruLuuluurDDDDDuuuluulDDDuuullDR" + "RRurDDDDrdddlluRUUUddddrUdrruLLdlUUUrDlddrruLdlUU") + +(defmaze + "############" + "#@# # #" + "# # #$#$# #" + "# *$ #" + "#..##$#$ #" + "#..#. # $ #" + "#....# $$$##" + "# #" + "############") + +(add-solution + "drDDDuuRRRRRRdrruuullDDlDRlulllllddlddrrrrrrrUUddlluRdlllllluuruurrrrr" + "dDuuruurrddddLLUUllllllddldRdrrrrrrUUrruuLLLLLLLrrrrrrrddllddlllluurUd" + "lddlluRdrUllluuuurDDDldRRdrrrrruuUlulLLLrrrrdrdddllllllluuuuurDDDldRdr" + "rrrrruurruulLLLLLLrrrrrddddllllllluuuuurDDDlddrrrrruRUUruLLLLLrrrrdddd" + "lllllluuuuurDDurrrrrrddrUruLLLLLLLrrrrddddlllllluuuuurDrrrrrddddrUUUru" + "LLLLLLLulDDDuurrrrrrrrruullDurrddlLLLLLLLulDDurrrrrrruullDurrddlLLLLLu" + "lDrrrrrrrddddrUUUruLLLLLLL") + +(defmaze + "########" + "# #" + "# $ $#" + "##$ $ #" + "#@$*#$ #" + "# #..$*#" + "# .....#" + "########") + +(add-solution + "ddrrrrrULUUrDlddlluUURuurrDLDlldddrruUrULuullDDDuuurrddLruulldRlulldRu" + "rrddrdddlllluuRURRuurrDLDDrUlllldlddrrrrrUdllllluururrrdDrdLLLrruuuuul" + "lDRurDDDDrdLLruuulululldRRRurDDDDrdLuuululldRRurDDDuurDDluuuurDDD") + +(defmaze + "########" + "#.. $ #" + "#. $$$ #" + "#.$# $ #" + "#*.. # #" + "#.$ $$ #" + "#..#@ #" + "########") + +(add-solution + "rruuuuuLLDLLDlDDRluuruulDDrurrurrdLLLLdDrrUdlluurRurrdLLddlluuuRldddrr" + "uuLulDDlDRuuulDDrurrrrddddllUUUdddrruuuLuLLLulDrrrrrddddlluuUruLLLddDR" + "luuurrrrddddllUUUruLLrruLLLDDurrrrdddLdlUUUUruLL") + +(defmaze + "##########" + "# # .#" + "# $$$ #*#" + "# $ ...#" + "##$ $***.#" + "#@$ ..#" + "##########") + +(add-solution + "RUUluurrDDRRRuurrDDLLLLLuullddRddRRULrdRRULuRuurrddDLruuullddRdrUUdlll" + "ddlluURRRRdrUllllllluurDldRRRRRRlldRRldllluRRRllluluurrDulDDRRRuLdddll" + "lURRRlluulldRRRRlluurDDldR") + +(defmaze + "###########" + "# ## #@ #" + "#.* # ## #" + "# * # $ #" + "#.* ## $###" + "#.$ # $ ##" + "#.* $ #" + "# . ## #" + "###########") + +(add-solution + "rddLLDDrddlUUdLLLdllluuRDldRuRRRRRdrruLLLLLLLuluuRDrDulldRddlUUrdRRRRR" + "drruLLLLLLLuurDluuluurDrDDldlUUdrdddlUUrdRRRRRdrruLLLLLLUluUrDDllddrUU" + "UddRRRRRdrruLLLLLLullddrUUrdrruRuUluurDDDDldRRdrruLLruLdLLLLLdlUrrrrrU" + "UUluurDDDDrdLLLLLrrrruuurDDrdLLLLLrdL") + +(defmaze + "###########" + "# # .#.#" + "# $* .#" + "# $ $ *...#" + "# $ $$$ #*#" + "#####@# .#" + "###########") + +(add-solution + "UURRllUluRRDRdddrrUULrULLDuLulldRdRRuLulldldRRllulldRRururrdLLrrrrrddd" + "llUUddrruuLuLDuLulldRdRRuLulldLdRuurrdLLrrrrrdddllUUddrruuulLLullddRdR" + "lulldRRluuurrdrrrdddllUUddrruuulLdLLdRlllulldRRRRuLuurDurDrrrdddllUUdd" + "rruuulLLulldddrRUrurrdddllUURurDDulldllluRRRRurDlldllllluRRRRRRlllllll" + "uurDldRRRRRRllluurDldRRluurDRRllldllluRRRR") + +(defmaze + "############" + "# #" + "# $$$$@$$* #" + "# $ ## .* #" + "# $$ ##. #" + "# #*...* #" + "# ##...*.# #" + "############") + +(add-solution + "ullDDuulllddRRlluurDurrdLrurrdLrurrDLrurrdLDuulldRlulldRRllulldRRllull" + "ddddrrUUddlluuuurrrrrrrrrddddLLdLLuulLUdrrddrrurruuuulllllllllddRRlldd" + "rUluuurrrrrrrrrddddlldlluullLrrrddLUruLrddrruLdlluurDldRRurrruulDrdLLL" + "dlluurDldRurrrruuuulDDDrdLLLLulDrrrruuuulldRurDDDuullulldRRRurDDullllu" + "llDRRRRRlllllulldRRRRRRlllllldddrruUddlluuRuRRRurrrrrddddLLLLulLUdrrdr" + "rrruulDrdLLLrrruuuulDDuulldRlulldRRllulldRRlddrrDrrrruulDrdLLLrrruuuul" + "DDDrdLLruuuulldRurDDDrdLuuullulldRRRurDDDuullllllldlddrUUluRRRRRRRurDD" + "ullllllldRlddrUUluRRRRRRurDllllllddrUluRRRRR") + +(defmaze + "#########" + "# *@#" + "# $$$**##" + "# #. #" + "##$# ...#" + "# $ #. #" + "# $ ##* #" + "# ..$ #" + "#########") + +(add-solution + "LDDrddddLLrruulDrdLruuuulDDuuuuLLDRurDDrddlUllUllluurDldRuuRRDrruLLrrd" + "DrddlUlldLddlluuRUUluurDDuRRuLrrrdDrddlUllULuurrrdDuulllddrdrRllululld" + "RururDurrdLLrrddlldLddlluRluRUUluuRRRdrrddlldLrurruullulllddrdDuuluurD" + "DuurrdLrrrddllULuRlullddRluRurrdddrruuuLLrrddddrddlUUUlluuurrdDrDLddrU" + "luuuulldRurDDDDuuulldddllUUluurDRRRurDDDuulldddlluUluRRRRurDDulllldRld" + "drruUluRRurDlldddlllddrrUdlUUUUluRRRRldddLdlUUUluRRRlluRRR") + +(defmaze + "#########" + "## ####" + "# $ #" + "# ## #" + "# $ $#" + "# $# *..#" + "# #$**##" + "# ##@...#" + "#########") + +(add-solution + "rrUUrULuuLLLrrrrDlddddllURdrUUULDDldRRuuuUruLLLullDRddRDrruuulLulDrrrd" + "ddlluRdrUUruLLLulldlddRRRRlllluururrdrrdDDDldlUruulllluurDldRRRRllluuu" + "rrdrrdDDrUluullLDldRRRlluurrrdDrdLulDDlUrruuulllddRRlluurrrdDrdLulDlul" + "llddrUluRRRRlluurrrdDrdLullluuulDDldRRRRlluurrrrDDulD") + +(defmaze + "#########" + "# ..# #" + "# ..*. ##" + "##$ $ #" + "# ## #" + "##### $##" + "# $ $ #" + "#@ #" + "#########") + +(add-solution + "rrrruLLrrdrruLLrUUULuurDDluLLulldRRddlUruRRdLLuulldRRddlUrrrrDDlddrUUU" + "ruLLuurDDlLLuRlulldRRddlUruulldRdrrrrDDlddrUUUruLLLLdlUUluRddrrrrddddl" + "lluRRdrUUUruLLLLdlUUdrrrrddddllllluRRRRdrUUUruLLLLdlU") + +(defmaze + "#########" + "#.## ##" + "#.*.$ $##" + "#.*.. #" + "#*#*. $##" + "#@$ $ ##" + "##$# $ #" + "# #" + "#########") + +(add-solution + "UURRuRurDDrDDuululldllURRRurrDLdLddRUluLulldddRRUrrrULdlldlluuurrRDrdd" + "LddrUdrruLLUUrDllLuRuuurrDDDLdlUrruuulldllldddRRurrdddlllUdrrruuulldRu" + "rruuulldllldddRRuULulDrrdrrruuulldLLrrurrdLLLddrrULLLrddlddrrruUUruLLL" + "ddRllddrrUUdrdrruLLUUruLLrdLrrDlddrruLdllUUddrUUUruLruLL") + +(defmaze + "##########" + "#@*.. # #" + "#*.$. # #" + "#..#.$ #" + "# $ # $ #" + "#$ $ $ #" + "# # # #" + "##########") + +(add-solution + "RdRRdRRdlddrUUluluurDDDrdrruLruulDLrrddllUdrruulDllURlluurDldRdrddlUlL" + "dllURRRRUUlulldDrdrrurrruulDLLdddrUllluluurrurDDrrrddLLLrrruulllDurrrd" + "dllUdrruulDlluRdddlUruululllddrdRRdrUUdllluluuuRdrrdDuulllddrddlUUUlDr" + "rdrRuuullullDRddrdrruuuuLLrrdddrrruulDLdlddrUlllluuuRurrdDrrrddLLLLLul" + "uuluRRdlddrddlUUUUluRdddlUrdrdrrrrruulDrdLLLLLdlUUUUddrdrrrruulDrdLLLL" + "dlUUUdrdrrruulDrdLLLdlUUddlUU") + +(defmaze + "###########" + "# #@ ##" + "# $###$ #" + "## $ $ #" + "# #.$ #" + "# #$ #.** #" + "# # $#*.*.#" + "# # ... ##" + "###########") + +(add-solution + "rDrddddLdllllUlUUUdrruLdlluuurrDDLruulldRddlUrdddrdrrrruruuLDruuulDLLL" + "LLuurDlulldRRddlUrRRRRRurDDDlUruLLLLLLdddrdrrrrUUruulllldLulDrrurrrrdd" + "lddlllluUUrurrrrddlLDrdLLrruuruulllldlluRRRRDDDrdLruuruLruulDllllluurD" + "ldRRRRDDDruruLruulDllllluulldRRurDldRRRRDDrruLruulDDDuullldlddlUUlURRR" + "RRDrruulDDlulllluulldRurDldRRRRRdrruulDrdL") + +(defmaze + "##########" + "# # #" + "#.#$$## #" + "#.$ $ $ #" + "#.$ #" + "#..*##$$ #" + "# ...*@# #" + "##########") + +(add-solution + "LLLUlluuuurrrDDRdrrUdlluluulllddRRllddrrURULddlluuuurrDDLDlUrrrrRdrruL" + "LLLdRRlluLLdRddrrrUdllluuurrdLrurrrddLULulldRRllulldRRlddrrrUrruuLLLLd" + "lllddRRRluururrrrddllULLLLuRdrrrdrruLLrruuulDDrddlluLuRdlLLuRRdrdrruLL" + "LLulDDLdRuuuuurDDrdLulDDuulDDrurrrrruulDrdLLLLLrrrruLLLulDDulD") + +(defmaze + "###########" + "#.........#" + "# #$####. #" + "# $@# # $ #" + "# $$$ #" + "#$$ ## $$#" + "# # #" + "###########") + +(add-solution + "DRRRRddrrUULUUruLdddrUllDlllddlllUURRRRRRuruuLLLLLDDuurrrrrddldlllddll" + "luuURdlddrrruuLUlldRlddrURlluurDurDrrrrurrdLuuurDlddrddlUUUUruLLLLrrrd" + "ddLLLLLulldRRRRRRurDrddllUdrUUUUruLLLrrdddLLLLLuUdllUddRRRRRRdrUUUruLL" + "rdddlllllllddrUluRRRRRRdrUUUruLdddllllllddrUluRRRRRdrUUUddlllllddrUluR" + "RRRdrUUdrUU") + +(defmaze + "#########" + "# #.#" + "# $$$ #.#" + "# $ #.#" + "# $ #.#" + "# $ #@.#" + "# $$**.#" + "## .*.#" + "#########") + +(add-solution + "rddLLLULUlluuRluurDDuurrrddlLrruulDLullddddrrUUddlluuuurrrrdddLUruulll" + "lddddrrdrUddrrruulDLdlUrrrdLulllulldRRRRRdrUUUUUddddlllllluuuuurrrrddl" + "lDDldRRRRdrUUUUdddlllluuurrdLDldRRRdrUUUddllluuulDDldRRRRdrUUdlllllluu" + "RRurDDldRRRdrUllldRRllulldRRRluuuruuulDDDDuuuulDDDDDRRRllllluuuuRDDDld" + "RRRRluuuuulDDDDldRRlldRR") + +(defmaze + "#########" + "# #@#" + "##$ $ # #" + "# $ $$ #" + "# $ #.#" + "# # #..#" + "# $**.#" + "## ..*.#" + "#########") + +(add-solution + "ddddddLUdLLUlldRurRdrruLLLLdlUrdRRluUULuuurrdLDDDDrdLrurrdLullllluuRRu" + "rDllluRdrrrUluullDDRluurrdLddrUllldRRllddrrrrrruuuLLLLuurrDulldddlluRd" + "lddrrrrrruuulLdLDuLUlldddrrRRRdrUUdlllllluuRDldRRRRRdrUllldRRllulldRRR" + "luuuruLruulDDDDDldRuuuuuullDDRlDDldRRRRRlluuruulDDDDlluuRurDDullddrRRl" + "lluuuuRurDDDDullddrR") + +(defmaze + "##########" + "#.## #" + "#.* *# ##" + "#.**.. $ #" + "# $..$ ##" + "# # $ $$ #" + "#$### #" + "# @## #" + "##########") + +(add-solution + "lllUUURRllUURDRRRDrrULuullDLddRRlluurDuurrddLLrrrdDrddlUllUURuuullddRd" + "rUdlddrUdrruLdlluuurrDLulDululLdRdRRuLdlUrrrrdLrDrddlUlUULuluurrrDDLdd" + "dlUruuruullldLdddRRlUlulldRurururrrddldLdllUdrruLULLrrdrruLLLrrrruulDr" + "dLLLrdddrUdrruLdlluuurrDLLddrUUruLLrdddrruLLdlUU") + +(defmaze + "##########" + "# # # # #" + "# $ # #" + "#$$$ $ #" + "#. *.##$ #" + "#.** # #" + "# #. *.$##" + "# ##...$@#" + "##########") + +(add-solution + "LLuurruuLLLruulDllllDDuurrrDDLLUdrruurrdLullDlluRRRRdLLrrrrrddlUdlddrU" + "UruuLLLulldRdDDRRurruullLrrrddlldlluuUlulldRdRluurDrruLLrrdrrrddlldllu" + "UUlldRurrrrrddlldlllUrdrrurruullllDDldRuuulDrurrrrddlUdlddrUUruuLLLLdd" + "dRluuurrrrddllDlluuuruurDldldlluRuRRdLulDrdddrrruruulLLrrrddldllluuUru" + "urDldlluRddddrrruruulLLrrrddldllluuUlldRurrrrrddldllllUrdrrruruullllDD" + "ldRRluuulldRurrruulDrdLLDDldRluuluRuRDrruulDrdLLulDDDuurrrrrddlUruLLLL" + "ulDDluluRRRdrruulDrdLLulD") + +(defmaze + "##########" + "#. .$.# @#" + "#..*..$ ##" + "#*$.##$# #" + "#. # $ #" + "#* #$$ #" + "# $ $ #" + "# # #" + "##########") + +(add-solution + "ldLLuLLDlDDlDuruulDrururrdLrrDDDrruLrdddlUUlUllDRdRluurDrruLLdlddllluU" + "UUluuRRRdrrDDuullulllddrddddrrruuRuuullullDDuurrdLullddrUluRdrrrrdddld" + "dllluulUUUrdDuurrrrdddlluRdddlULrruulDrrUrrdLLLddllllUUUruulDrurrrrDDl" + "dddlluLUUUluRRRllddddrdrruLLdlUUUUluRRlddddrrruurrrdddlULLLLdlUUUUluRd" + "ddlUUrddddlUUUrddrrruurrDrdLLLLLLdlUUrdrrruulDrdLLLdlUrrrruurDrdLLLLdl" + "UUUU") + +(defmaze + "############" + "# #@$ . #" + "# ###$#.$ #" + "# $.# #" + "## $$***.* #" + "## $.* . #" + "# ##.* # #" + "############") + +(add-solution + "RRRRddLLLLLDlddrUluUrrrrDDLLrruullDRlulldRlddrUluurrrddLLURurrrrddLUdL" + "LURdrruuuullDDDRdrrruuuuLLddDldRlulldRlulldRRurrruuurrdLrddLLLLuuuRRDD" + "LdlUdLdlluRuRRdLrrRuuullDDuurrddLdLUllDlluRRllluurDldRdrddlUUrruRRdLdL" + "ruulDllURRdrrrruuullDDuurrdddlLLLuRdrrruuulldDuurrdrruLdlddlLuRdrUllll" + "dRRRlllulldRRRRllllddrUluRRRdLullddrUluRRlluluurDldRRRRRR") + +(defmaze + "##########" + "# $.. .#" + "#@$**.**.#" + "## #. $ ##" + "# $$$ #" + "# ### #" + "# ## #" + "##########") + +(add-solution + "uRDuRRRRRllddlULulldRRRdrRULuLLdRdrruRuLLrdddrUllluRlllDDlddrUrrURuull" + "ldDldRuuurrrddlLrrurrdLuluurrDLulDllldDrrUdlluuruRRdLddlluuluRRldddldd" + "rUUrrdLullddrUluRdrruuurrddLruulldRluLulldRRlDDlddrUrrUruuuLLdldDldRuu" + "ururrdddlLrruuulldRlldDrrUdlluururrDrruLLdLddrrUdrUdllUdllllddrUluRRRd" + "LullddrUluRRdrUUrrdLLdlluRdrUlluuluR") + +(defmaze + "############" + "# # .*.$. #" + "# $ *.*.*..#" + "# $ . $$##" + "# #### $ #" + "##### $ $ #" + "#@ # #" + "############") + +(add-solution + "rrrruRRdrrruuLULLuuLLddLLuuRlddrruRurRDLdLUrrRddrddlUUddlluRdrruulULDu" + "ulldRlulLdRRllldlluRRRuulDrdLrurrdLrurrDLullllddlluuRRRRdLruRRdLulllll" + "ddrUluRRRRRdrUlllllddrUluRRRRdLLullddrUluRRRdrrrrdrddlUdlluRUddrruuLuL" + "LLLLullddrUluRRdrrrrrdrddlluUruLLLLLullddrUluRdrrrrrrdrdLdlUUruLL") + +(defmaze + "############" + "# #@# #" + "#.. $$$ $# #" + "##.*# $$ # #" + "# $.# #" + "##..#$ $ #" + "# ... ## # #" + "############") + +(add-solution + "DRDDrdRurruuullDDLdRuuulDllLLulldRRRRRRDrddlUlUdrruLuurDDluLLLLulldRRR" + "RRRddllUdrruulLLLulldRdDrddlUUrddrrUUrruulDullLDDlddrrruuUdddllluuruur" + "RdrrddLruuuurrrddddLLLuulluRlllddlddrrrUUUdddllluuruurRdrrddLrrrruuuul" + "llDDrDuluurrrddddlLuullluRlllddlddrrrUUUdddllluuruurRdrrrddLLrruulllul" + "lddlddrrrUdllluurDldRuuuuulldRurDDDDuuurrdrrrddrruuuulllDLLLLulldRurDD" + "DuurrrrurrrddddlllllUUruLLLulldRurDDurrdddrUUddrruuLuLLLLulldRurDrrddr" + "UruLLLLLDDDuuurrrrdddrUrdrruLLLLdlUUruLLLulDDDuurrrrrurDDLddrruLdlUUru" + "LLLLLulDrrrddrUruLLLL") + +(defmaze + "###########" + "##@# #" + "# $###$$# #" + "# $ $ #" + "# #* *# #" + "# $...... #" + "# # # # #" + "###########") + +(add-solution + "DldddRRRRRRurruuullDDDrruLdlUrrdddllUllluuRRRDrrddlULrruuuullDDDuuurrd" + "dLDlUlllddllluuRRRRRRdrrddllULLLuurrrDrrddlULrruuuullDDDuuurrddLDlUrrd" + "ddlUdlUrruulllllddrRRdrruuuuulllDurrrdddddllullluurRuurrrddddLLLLrrrru" + "uuulllddRDuluurrrddddlLLruuluurDDDuuurrddddlLrruuLDruuulldDD") + +(defmaze + "##########" + "# # #@#" + "# ## # #" + "#...* # #" + "# . # ## #" + "# .##$ $ #" + "## $ ##" + "###$$# ##" + "# #" + "##########") + +(add-solution + "ddddLdLLUUULLdlUrrrruulDrdLdddrruLdlUUULLdlddrRRurDluuuruulDDDDuulldll" + "uRRRldlddrrRuuUlllluurDDDrurrruulDrdLLLdlUrrrdddlllUdrrrurrdLrddlUUruL" + "dLUUUllllddrdrRRurrdddllllUdrrruUluuullllddrdRluluurDluuurDDrrrruulDrd" + "LLLLrrrdddrruLdddllluuRRUUUruulDrdLLLrrddrrddlUruLdddllUluRRUUUruulDrd" + "LLrddrrddlUruLdlUUUruulDrdL") + +(defmaze + "###########" + "# #@*. .#" + "# $$#$$**.#" + "# *..#" + "# #$#. .#" + "# ## $ $ #" + "# # # ##" + "###########") + +(add-solution + "RDuRRDLrrddllURdrUllLLLLdlluRRRRRRRuulDullDRdLrRddLdlluRUUrrddLdlUrrur" + "rdLuluUrDldRlullLLdlluRRRRRuulDrdLLLdlluRRRRurrDrddLLdlluRUURuulDrdLru" + "rruLrddLrddlUUUlldRurDllLLdlluRRRRRurrdddlLdlUUdrrruuulldLrurrdLrddlUU" + "ddlluuRlddrrruuuLDllLLdlluRRRRRRllddrrruUllllllluurDldRRRRRRllllluurDl" + "dRRRRluR") + +(defmaze + "###########" + "# #. #" + "# $ $ *# #" + "# # $*. ##" + "# $ $. #" + "# $$###***#" + "# #@*... .#" + "###########") + +(add-solution + "RRRRRlUULULLuLrddLUrrrdrruLUddlLuRlluurDRddlUlldRurrdrruLLuLullDRddRRu" + "uLulllldddRRRllluuurrdDrdLuuurrdrddLrurrdLddllllUUUrRdRlulldddrrrruUll" + "uuulllldddRluuurrrrddllDlluuurrDRlulldRRllddrrUrrdrrddllllUUlluururrDL" + "ulldddrrRUdllluuurrdDrdLddrrrruulLulluullddddRluuuurrddrrdrrddllllUllu" + "uuurrrrDrDLuullllddddrrdrrrruuruLdddrUdlllllulluuuurrrrdddRluurDrDDrdL" + "LLrruuulldRurDDrdLLruulluuulldRlullddddrrURRRurDDrdLuulllldlluRRRRRurD" + "DulllllluuRRDullddrRRRRurDurDllllluRRRllluurrDulDDRlldRRR") + +(defmaze + "##########" + "# #" + "# ## ## #" + "## $$$ ##" + "## $ #" + "# #. #" + "# ##$***#" + "##$*...*@#" + "# . .* ##" + "##########") + +(add-solution + "LUdLLdlllUUluRuRRdrDRdrdLLLrruulDrrrULdlluuluURuulDDrDrrDDrdLuuurDluuL" + "dlUdDDRDrUUruLullluurDDrrdddllulUUdlluRRRuulDrdLddrUUdddrruuuLrdddlluu" + "RurDDullluRluurDDldlluRdrUddrdrdrrULuurDlulLLrddRdrUUruLLLulllddRRUruL" + "rdrruLrdddllUluRRurDDullddrdrrULuulldllluRRRRurDDDrdLuuullluRuulDDrdrr" + "uLdldlluRRRurDDDuullluurDldRRurDDullllluRRurDldRRurDrD") + +(defmaze + "###########" + "#..... $ #" + "# $$*# $$ #" + "# .*. $ $ #" + "###.# $ #" + "# .* ##$ #" + "## #@ #" + "###########") + +(add-solution + "rrruuuuuLLLLLDuLLDRurrrrrrddLUruLLLdDRluurrdLulLLLdDRUluRddRddLdlluRUU" + "UlldRurrdrddLdlluRuUruuRRRddLLLuLDlluRRdrUdrddLdlluRUUluRdrrddLdlUUdrr" + "uurrdLullLddrrUdlluuulldRurDDurRddldlluRuurrdrruLLLLulldRurDDurrrrurru" + "LLLDrdLLLLulldRurDrrrrurrdLLLLLLrrrrrrdLrddlUUruLLLLLrrdRurrddlUruLLLL") + +(defmaze + "##########" + "# .. # #" + "# *.$$$# #" + "# *..* # #" + "# .$.. $ #" + "# $$.$ $ #" + "## *# # #" + "# # #@#" + "##########") + +(add-solution + "uuuLLdddllUllUluuuurrrrrDDLULulllddddrdrrdrruuUdddlluURUrDlldlluluuuur" + "rrdrrDullulllddddrdrruruUruuLLrrddlUruLddddldlluRURlddrUrrUrrdLLLLddrr" + "UdlluurRuUluurDDDDlUdldlluRuRRdLulDrruUruulDlDurrdLddlluRdllluRRdrrrUr" + "rdLLLLddrrUdlluurRuUluurDDDDllLulldRRRddrrUULULLrrdrddlluUruUrDDllluRd" + "llluRRdrrrurrdLLLLddrrUdlluuLulldRdRluurDrrRuulDLLrrrdddllUUluRdddrruu" + "LrddlluUlldRurrrurrdLLLruuuulD") + +(defmaze + "##########" + "# #@ #" + "# $$ $$#" + "# $ # * #" + "# $ $ #..#" + "# # #.*..#" + "## ..$.#" + "##########") + +(add-solution + "rDLLrDDrddLUruUluurDDDDlUUdddLLuRdrUruulluLullllddRRdddRRlluuulluurrDu" + "rrdLrrdrrddllluLULDrrdrrruullulullDRddlUruulllddRRlluurDurrdLddrrddllU" + "UrrdrrruulDruuulDDluLulldRRRdrrddLdLLuulUdrddrruruullululldRddlUruulll" + "ddRRlluurDurrdLddrrddrruruulluLulllldddRRddRRuuLrddlluUlluuurrrrdrdrrd" + "dlLrruullululllldddrrrrDrrruulDrdLLrruuuulDDDrdLuulululldRRRdrruulDDDu" + "lulllulldRRRRRdrruulDDlulllllddrUluRRRRRdrruulDlllllddrUluRRRRRurDDDuu" + "lllllddrUluRRRRurDD") + +(defmaze + "###########" + "# # #@ #" + "# $ *$$*#" + "# $ ..*.#" + "# ##$#$.#" + "# $## *..#" + "# ## .##" + "# # # ###" + "###########") + +(add-solution + "rrrDDLLLLrrrruulllDldRluLLddlluRdrURurrdLLrruurrrddlDDrUUlLLuurrDDllDD" + "RddlUUUUrrrddLLrruullldDuurruullDDulldRRuurrdLLrrdrddlUUddllUURuurrDLD" + "llddrrruUluullDRdrrddllluUllLdlluRRRRRRuulDrdLruurrDLullddddrrruULDuuu" + "llddRluurrdDllddrddlUUUUrrrddLruuluurDDDulllLLLdlluRRRRRRRurDllllluulD" + "rdLdlluRRRRRRRDuuullDRurDllLdlluRRRRRllldRllldllddrUUluRRRRlllluRRRR") + +(defmaze + "##########" + "# ## #" + "# ### $ #" + "# $ #" + "# .# $$ #" + "###*.* # #" + "# # .*.. #" + "# #$** #" + "#@$ .* #" + "##########") + +(add-solution + "RRRUURUrUdldlddRURUrruuLULLDRurrdddllUUluRddddlluRUruulDDDlddrUrUrruuL" + "LDlDRllddrUluRuruulDDDllURdrUdlddrUluurrurrdddLLULrdrruuullulDDurrrddd" + "lluUluRdddLUUlldRRuruulDrdLddrrruuuuLruulDrdddddllluuuuuRDlddddrrruuuu" + "LLulDrrrddddllluurUUlLLDlluRRRRRddldllUdrruLrruulDrdLdddlUrrrruuuLLulD" + "DDurDuurruLruulDrddllluuRDDDurruLLulDDDrurruuulDrdLLulDD") + +(defmaze + "#########" + "#.. $ # #" + "#.**..* #" + "#.#.## #" + "# . # #" + "##$ $$ #" + "# # $ #" + "# $$ $# #" + "# #@#" + "#########") + +(add-solution + "uuLUUruuLLuLLDDDrdRldRlddrUUluuluuurrdrrddddLLrruuuullulldddrdDrrruuuu" + "llLrrrddddllluullluuuRRDrrrrddddllddlllluurUdlddrrrruurruulDruuullllul" + "ldddRddlddrrrruuluRdddlllluuruuluuurrdrrrrddddLruulDruuullllulldddrdRR" + "RDlulldlddrrrUUddllluuruuluuurrdrrrrddddLLrruuuullllulldddrdrRuLrdDrrr" + "uuuullllDDrddrrruulUrdddlUUddlluRluluuulldddRdRRlluluuurrdLulDrrdDrddr" + "rruuuuLLLLLrrruLLLrrrdrrddlUruLLLLddrddrrUUUruLLLrrddddlluRdrUUUddllul" + "uUddldRRRdrUUruuLLLuLDDurrrrddlUruLLLulDrrrdddlllldlddrrrrUUluRdrUUUru" + "LLLrrddddlddlUUddllluururRRdrUUUruLLrddddlddlllURRdrUUluRdrUUUruLdddll" + "llDldRRRdrUUluRdrUUU") + +(defmaze + "###########" + "##..###.# #" + "## .$ . # #" + "## .*.. # #" + "# #.#*## #" + "# $ ##$ #" + "# $#$$ #" + "# $$ $ #" + "##@### ##" + "###########") + +(add-solution + "URRRRdrrUdllulllUUUURlluurDRRRdrUllldRlulldRddddlluuRlddrrrrrdrruLLLLL" + "uUrrDullUUluurDrrdDDlluUluRdddrruuLrurrdLLddlluUluurDRRdddlluUluRdddrr" + "uuLrddllddrRUUddRdrruLuLrddlUllluuuUluurDDrruLrdrruLLdllDDrrUdlluurRur" + "rdLLddlluuluurDRRdddlluUluRdddrruuLrddllllddRRUdRRRlUUlLuUluurDDrruLrd" + "rruLLdllDDrrUdlluuluurDDrRuLdlUrrrrdLLddddrdrruLuLrddlUlUUUUruLLLdlUrd" + "RRddllUdrrddrruLdlUUUUluRllldRddrrdrrdrruLLLdlUUUddrrrruulDrdLLLdlUUdd" + "llUUUUddddlluRdrUUUddlluRdrU") + +(defmaze + "##########" + "####.. #" + "#.....$$ #" + "####..# #" + "# #*#$ #" + "# ## $ #" + "# $@#$$ #" + "## $$ ##" + "# ###" + "##########") + +(add-solution + "uRRDulUUluurrrrddddLruulDruuulDulllddrURurrdLLLLLLrrrrrrddlUruLLLLLruR" + "drrrddddLUUUruLLLLrdddRluuurrrddddldLUrUUUruLLLulDrdddRdddllURdrUUrUUU" + "ruLLLdddRdddlllluRRRdrUUrUUUruLuLLddddlDurRdrUUUULulDDurrdddddldllluRR" + "drUUdlluurRddlllluRdrrrruUUUruLLulDrrdddlllDldRRdrUUdlluurRdrUUUruLLrr" + "uLL") + +(defmaze + "###########" + "#..... # @#" + "#..## $#$##" + "#. # # $ ##" + "#..# $ #" + "# $ $ #" + "#$$$# $ ##" + "# # #" + "###########") + +(add-solution + "lDDDrdLdlLdlllllUUddrrULURRurrRDullldlddrrruUruLdddlllluuUUluurrrrrDDD" + "DLLLrrruuulullllddrdDrrrrrrruLuLrddlllllluuluurrrrrdDulullllddrUluRRRl" + "lddddrddlUUUUUluRRlddddrrrrrruulDrdLLLLLdlUUUUluRddddrrrrruulDrdLLLLdl" + "UUUUdddlUUUrdddrruRdrruulDrdLLLLddrrrUdlllllUUUUdddrUUUddrrrurrdLLLLdl" + "UrddrrUruLLLLdlUUdrrrrrrrdLLdlUruLLLLdlU") + +(defmaze + "###########" + "# #" + "#..# $$ #" + "#..## $ $ #" + "#.*##$$ $ #" + "#. # $ $ #" + "#.*# $ ####" + "#...$@#####" + "# .#######" + "###########") + +(add-solution + "LuuRUUdRUdldlddLdlluuuuuruurrrrrrrddLLLrrruullDulllllddldddddrruruurur" + "uRldldlddrUrUrUUlDlDurrdLdLdlldlluuurUUddlddRUUUluuurrrrrrDDldddldlLdl" + "UUUddrrruruulDlDurrdLdLLdlluurDrrruulDrdLLrruruuuruulllllldddddddRUrrr" + "uruuuruurrddddLLLulDrdLulDrdLLLdlUUUUUddddrrrrururrruuLDrdLLLulDrdLulD" + "rdLLLdlUUUUdddrrrrururrruuuulllDDuulldRDDDrdLulDrdLLLdlUUUddrrrruuuuuu" + "rrdLulDDDDrdLulDrdLLLdlUUdrrrrururrruuuLLLulDDDDrdLulDrdLLLdlUrrrrurur" + "ruuLLulDDDrdLulDrdLLLrrruuuurrDLulDDrdLulDrdLLrruruurrdLLulDrdLulDrdL") + +(defmaze + "###########" + "# ....# #" + "##$*.*.*.##" + "# ##.. #" + "# ## $ #" + "# ##$$##" + "# $$ $@##" + "# # ###$ #" + "# $# # #" + "# # # #" + "###########") + +(add-solution + "LUUluuLulllDDrUluRddllddrUUddlddrUUrrdLulluurruuRRdrddrddLLLrrruuluuRD" + "DurrdLullulullddllddrrrdrrrrUUruLdddllllullluurruurrdrddRDrUlluurDDrru" + "LLrdddDrddlUUUUUluullullddllddrrrdrrRlllullluurDuruurrdLullDDrUluRRdrr" + "rddlUrdrruLLrddDDrddlUUUUUluuLLLullddrUluRddllddRUdlddrURRRRRlllllluur" + "DldRuuUrurrrrddrdDlllluLrdrrrruuluulllldldDuuruulDDrurrrrddlUruLLLrrrd" + "drruLLdlUrrdddDrddlUUUUdllllullluurrUdlDldRlddrURRRRRUrUruLLuLLLrrrdrd" + "dlUlUdrruLuLLrrddlUruLrdrddDDrddlUUUUUruLdlUdddlllllluurDldRRRRRRurDDr" + "ddlUUUUUruLLdlUrdddllluLdlluurDldRRRRRRurDDrddlUUUUUruLLdddllllldlddrU" + "UluRRRRRRurDDrddlUUUUUruL") + +(defmaze + "###########" + "# # # . #" + "# $ **. #" + "## #$*... #" + "#@$ ##.. #" + "### $ $ #" + "# $$ # ##" + "# # # #" + "###########") + +(add-solution + "RuuRRDRRRdrUlllluurDldRRRdrruLLrruullDurrddlUddldLLLUUruRRDulldRRllldd" + "rrrUrruuLDLddlddlULLdlluRRRRluuuruulDDDDuuullddRluurrrrRdddlLdLLURRlUU" + "ruulDDDuullddRddrruLUUrurrdddLLdlUUlluurRRlllddrrUruLdddrrruuuLrdddlll" + "uurRlluurDrrDrrddLLLLddrUllUUlluuRRRRdrrrddllLdlluuUdlluurRRldRRRllldd" + "dlUruuullddRdrUUdlluurRurDldRRlldddrruLdlUUUdlluurRurDldRldddldlluRdrU" + "UruuullddRdrUUdlluurRurD") + +(defmaze + "###########" + "## #####@#" + "## ... $ #" + "#.*.#.$$###" + "##* ## #" + "##..# $ #" + "# $$ # ##" + "# ##$ $ ##" + "# ## ###" + "###########") + +(add-solution + "dLLDuLLdRdRluurDldDrrddLdllURUUlDruUUluLLdddlDRRRuruuruLLrdddrrddLdllU" + "RUUlDllllddrUluRRuuuLDDDruuuuulDDDrddRRurUUluLrdrddrrddLdllURUUlDlllld" + "drUluRRuuluuurDrrdrruLLLLDDlDDrRRurUdrrddLdllURUUlDllllddrUluRuuruurrr" + "rdLulllulDDDDDRRRurUUruLLLrrdddrUdrddLdllURUUlDllluuuuurDrrrdDrdrddLdl" + "lUdrruruululuullllddddrrRddrruruuruLLrdddldlluullluuuurrrrrDlulllldddd" + "lddrUUrrruRUUruLLLLulDDurrrrdddldddrruruuuLrdddldlluuurUUruLLLLulDrrrr" + "dddlddRUUUUruLLLrrrddrdddLdlUUUUUruLLrrddrdLrddlluUUUruL") + +(defmaze + "###########" + "######@ # #" + "##.. $$$$ #" + "# .*.#... #" + "# .$.**.$ #" + "# $ . $ #" + "##### ##$ #" + "# $ $ # #" + "# # ##" + "###########") + +(add-solution + "rDDrrddLLLLrrrruulllDuruulDLLLrddRdRRUUddlluRllLUrurrDrrrddLLULuRluurD" + "lddrdrruuuLLDldLdRuuruulDlldlddRUlullddRUrrrrUrurrdLrddlULLdRluLLdRurr" + "rruullulDllDurrrrrddlllldlLURRluurrrrrddlUdldLLuluurrrDrrddLrddlUUruul" + "lulllddrdrRUUrrdLDlllulldRRllulldRRurrdRRULLLuurrDullddrdrruruLddllulu" + "urrurDDrrddLrddlUUruullulllddrdrRUUrrdLDlUdllulLdRRuRRllluurrDRdLuuurD" + "lddrdrruuuLLDldLdlUrddddlluRdrUUURuLddddlllluRRRdrUUUruuruulDrrrdLrddl" + "ULrrdddlUUruLdLL") + +(defmaze + "###########" + "#@$ .....#" + "####$##**##" + "# $ # *..#" + "# $ # $.##" + "# $ # $# #" + "# $ #" + "# ## # #" + "###########") + +(add-solution + "RRRRRRlllDDDLDlluuRDrruLdlldRlddrURRUdllluurrDullddrUrrdLrRRRdrruLLLuu" + "uRRdLDldRdrruLdlUlLLuluuruurrrDDlDDuuruulllddlddlluRdlddrUUrrdLrrRuuur" + "uulllddDDuuuurrrddldddlLullluuRRllddrrrdrruuurrdLuuuRDlullldDlllddrrrd" + "rrRUUUUruLLrddddddrruLdlUUUUUruLdddddlllulllddrURRRRRdrruLdlUUUUUddddl" + "llllluuurrrDDldRRRRdrruLdlUUUUlDDrdLLLuuulllddRdRRRRRdrruLdlUUUrUUddll" + "uRdrUdlddllluuullDDldRRRRRRdrruLdlUUUluRdddllllluuRDldRRRRRdrruLdlUUUd" + "dlllluuurDDldRRRRdrruLdlUUluR") + +(defmaze + "###########" + "### #####" + "### $ #####" + "#### # #" + "## $$ #" + "# .. #$ ##" + "# **.. ##@#" + "## *$$### #" + "#.*.. $ #" + "# .$ ######" + "###########") + +(add-solution + "ddLLLLLULUUrURRRurrdLulDllldlddrddLULrruUlDuulldRDrUrdddlUUluuuRRDLulD" + "rruRRRurrdLLLLLdDrrUdllDlddrUrUdlluRuulDDruuurRddLLddrUluuurrddLruuRur" + "rdLdLruulDllldlluRRdDrddlUllUdrUdrruLuuRuuulldRDDDDLdRddlUUruuurRRurrd" + "LLLLulDDDrrUdlluurRlluuurDDldddrruuLrddlluUUrdrRurrdLLLLrddlluUrrrrdLu" + "lllddrrUdllDlddrUrULuuuruuulldRDDDDDrdLuuuurRdrruLLLuluurDDlDDDDuuuRRd" + "rruLLLulDD") + +(defmaze + "###########" + "### #####" + "## $ $@####" + "# $ $#.###" + "# # ###" + "# $ #*.###" + "# $ ##.$*.#" + "# # ##. # #" + "# #$##$$$$#" + "# .......#" + "###########") + +(add-solution + "LDlLrdRuuullDlDRllddRUluRururrdddldLruruuulldlddldddddrrUUUdddlluuuRUl" + "uurururrdddldLDlluuururRlldldddrruruUddldlldddrrrrrUUrUUULLrrdddlddlll" + "lluuurrDDuuurUrrrdddlddllLuuulluuurururrDDuulldldldddrruruRldldlluRluu" + "rDDuuururrdLrddlULrddLddddrrruuruuuLLrrdddlddrUdrrULLdlllluuuurUruuull" + "DlDlddddddRRRRRRRllllllluuuRluuurururrdddldlDDDuulldddrRRRRRlllllluuuu" + "RluurDDldRuuuururrdLrddldLDDDuulldddrRRRRUrUUddrrUdllldllllluuuuurDldR" + "urDDDuulldddrRRRlluuuuruULrruullDlDDDldRurDDDuulldddrRRluuuuruuLuurDll" + "DDDldRurDDDuulldddrRuuuururuLLulDDDldRurDDD") + +(defmaze + "###########" + "##@## ###" + "##$## ###" + "## ### ###" + "# ### *.#" + "# $$ #$*.#" + "# $ # .#" + "# $$ #.#" + "# ## $***#" + "##### ....#" + "###########") + +(add-solution + "DDDlddRRllddrURRRddrrrrUUUUddddllURdllluRRdrrUUUllDDldRuuurrddLLdlluuR" + "lddrruLrrrdLruuullDldRRdrUUdlluuUUUluurDDDDDDlllllluuurrDDuulldddrRRRR" + "dRRdrUllUUUUUluurDDDDDDlluuLDldRRRddlUrdRRuLUUUUUluurDDDDDDDulLulldRRR" + "lddrRuUUUUUluurDDDDDDlllllluRRlluurDDldRRRRRDRRlUUUUUluurDDDDDDDlluuul" + "DldRRRdrUUUUUluurDDDDDDllllluuurDDldRRRRdRUUUUUluurDDDDDD") + +(defmaze + "##########" + "# #######" + "# #######" + "#.*... #" + "#.*.*#$# #" + "# #. # $ #" + "# *$# $ #" + "# $@# #" + "####$# $ #" + "#### #" + "##########") + +(add-solution + "LUUUddlluuRURRRRDDDDrruuuuLLLLLDllddrrUrULdddrUUluuRRRddddrrddllllUUlu" + "lluuRluRluurDDldddrrdrddrrrruulluuuullLDDrDDlUlluuRUrrDLulldddrrrUdlll" + "uuurrdDrdLuuulldRurrrrddddrrddllllUUluurUdlddrUUddddrrrruulluuuulLLDll" + "dddRRlluuurrurrrddddrrddlllluUllluuuuRluurDDlddddrrrddrrrruulluuuullLd" + "DrDDllluuuRUrrDLullddddrrruUluurrrddddrrddllllUUllluuuurrddrUlulldRluu" + "urDDlddddrrUdlluRdrrUUddddrrrruulluuuulLLLulDrrrrrddddrruuuuLLLLLLrrrr" + "rrdddLdlUUUddrruuulLLLLrrrrrddLdlUUdrruulLLLrrrrddddddllUUUUUdrruulLLr" + "rrdddddLdlUUUUUdrruulL") + +(defmaze + "##########" + "## ##" + "## $$$ $ #" + "## # .#" + "###$$$##.#" + "#@$ # ...#" + "# $ # .#" + "# $#$#...#" + "# $ ... #" + "####### #" + "##########") + +(add-solution + "dddRRRRRurrddlUUdlllllluuRDldRRRRRurruullldlLrrurrruuuLulllllddrDDuulu" + "urrrrrdrdddddddlUlllllluuuRDlddrrrrrrruuullldlDuLUlldddrrRRRllllluuRDl" + "dRRRuuLrrurrrddLUruLrddddlUUUruuuluulllllddrDDlDlddrrrRRllllluururuulu" + "urrrrrdrdddddddlUlllllluurDldRRRRRRdrUUUUUddddlllluuLuuurrDLulDDlDDldR" + "RRRRRdrUUUUdddlllluuLuuuluurDDDDlDDldRRRRRRdrUUUddlllluuLuuuuurDurDurr" + "dLLLulDDDDlDDldRRRRRRdrUUdlllluuLuurrULulDDDlDDldRRRRRRdrUlllluuLuuruu" + "urrdLLulDDDDlDDldRRRRRlluuLrrUUUluurrdLLulDDDDlDDldRRRRluuLulDDldRRR") + +(defmaze + "###########" + "#..... ####" + "#..$#*$####" + "#.. $ ####" + "## # # ###" + "## # $ ###" + "## # $$ ##" + "# ### $$ #" + "# $ @# #" + "## ### #" + "###########") + +(add-solution + "dllUUUUUUluurrrrrDDLLLrrruulllDLDDDDDldRdrruLdlUUUUUUlURurrrrddllLrrru" + "ulllldDrrddRRUUddDrrDrddlUllUUrDluUlluurrDrDLddrUrDlluuuulldddRRuLdlUr" + "rddrrrddlUruLuLLddRluuuuulllluurrrrDDlllUluRRlddlDDDDldRdrruLdlUUUUUUl" + "uRdrrrrDDllUdrruulLLUlDDDDDldRdrruLdlUUUUUUluRdrrrrddDrrdrddlUllUUrrDL" + "ulUlldRluuurrDrDLLdlUUdrrrDLrrdrddlUllUUruLuulLLLuuRlddrrdddRluuurrddL" + "dlUUdrruulLLUlDDDDDldRdrruLdlUUUUUUrrrrdrddrDrddlUlluUruLLdlUUdrruulLL" + "uLDDDDDldRdrruLdlUUUUUUUrdrrrdddddrUdrruLLdlUUdrruLuLLdlUUdrruulLLulDD" + "DDDldRdrruLdlUUUUUUrrrrdrdddlUruLLdlUUdrruulLL") + +(defmaze + "##########" + "#### # #" + "### $ $ #" + "# $. $ $ #" + "# .. # #" + "##** #$$ #" + "# .*#@$ #" + "#..*.*$###" + "# . . ###" + "##########") + +(add-solution + "RUUULLdllDDlddrrrrrUUddlluRdlllluurDRdrruLLLuuurrdLDldRuuulDrruuruulDl" + "DurrdLrrdrruLruulDLrrddlUdlUrrdddLUruullllddlluRddddrruuRUrruullllulDr" + "rrrrddlldlddlluuululuRRRllddrrULuurDldddddrruururruullLLulDDDuulldRurr" + "rrrrddlldlddllulUUrrUdllddrdrruururruulllLuurDldddllURdrUURuulDlDDrUlu" + "RddlldddrdrruururruulLLLrrrrddllUddlddrUUUdddllluRlluuurrdLDldRuuulDrr" + "uuulDrddlluluRRlddrruLuurDldddddrrruuurruulLLLulDDDuulldRurrrrrrddlldd" + "dlllulUUrrUdllddrdrrruuurruulllLuurDldddllURdrUURuulDlDDrUdlldddrdrrru" + "uurruulDuLLLdlldddrdrrruuuUddddllluluuurrurRdrrddLruullulldlldddrdrrru" + "UlDrdLruurruullulldlldddrRlluuurrdLDldRuuruuruulDlDDDDuuuurrdLulDDDulD" + "DuuluRdrruulDrdLrurrdrruLLLLulDlDDrruLrurrrruulDLrrdLLLLulDDrdLruuuurD" + "rdLLulDDrurrrrdddllUUruLLLulDrrrdddrUUruLLLL") + +(defmaze + "##########" + "#### ####" + "##.* ##" + "# .* #$ #" + "#$.**$# #" + "#.*. $@$ #" + "#..*##$$ #" + "#.$ ## #" + "### ###$ #" + "###.### #" + "##########") + +(add-solution + "LUULuLrdrddLULUllDDuRDRDDDuLUUluurrDDurrdLLuulldRRdrruuLuurDrrDrddLLLu" + "UddrrruululLdlLdlluRRddRRuuurrdrddlLLuLLuRdrdrrruulullulDDurrrdrddlllu" + "UddrrruululLdllddRRlluullddRRlddrUUlluurDDuurrrddLLUdrruulLdlldRRddlUU" + "ruurrddLruulldRlDlddrUUlluuRDDrruuLrddlluRdddlUUruurrurrdrddlLLLrrrruu" + "lulldlldDuurruulDrrrdrddlllUUddlluuRuRDllddlddrUUlluuRDDrrrrrruulDrdLL" + "LLULrUruulDDLdDlluuRlddrrrrULrdrruuuLLulDDurrrdrddddlUruLLLLLLrrrrrddl" + "UruLLLLrrrrrddddlUUUruLLLLruUddrruuulLulD") + +(defmaze + "###############" + "############ #" + "########## $ #" + "# .... . $ $ #" + "# #$***.$$ #" + "# $## .*# $$ #" + "# ## .. #@##" + "###############") + +(add-solution + "ULUULLdRluLLDRluLLDRddrrrrUrrruuLLLLLdDLdllURuulDrddrRuuuLrdddlluuRDuu" + "rDurrrrruulDrdLLLuRdrrddlllULLulDrrrdrrruullulDrrrddllUUlLdlluRRRRddrr" + "uuLruulDrdddlluLLruuRDlddrrruuLLulDrrrddllUUlllldlluRRRRdLruRRddrruuLr" + "uulDrdddlluLuuRDlddrrruuLLulDrrrddllUUllllllLLdlluRRRRRdddlUUruRRdLulD" + "rruRRRddrruuLLrruulDrdddlluuLuRdddldLruULrruulDrddrruuLrddlluUlLdLLuRR" + "RRdLLrrdrruLLrruLruulDDrddlluLuuRDlllllLLLdlluRRRRRRRRRddrrruulLulDrrr" + "ddllUUlllllldRlddrUluulldllddrUUluRRRRRRRRRRddrruuLLLLLLLLLrrrrrrrrruu" + "lDrdLLLLLLLLrrrrruRdrruulDrdLLLLLLLrrrrrddrUruLLLLLLrrrrddlUruLL") + +(defmaze + "#########" + "# *.....#" + "# ##*. #" + "# # .*$ #" + "# ** #" + "##$ $ #" + "#@$ $$$#" + "## #" + "#########") + +(add-solution + "RdrrrrrUUluULDrdrddlUdlluRdllluRuuRRurrDDuulldDLullluuuRRRRDDrrddLULLd" + "RuuuullldlddrDRddrrUUUdddlluuRlddrruLuurDurrdLulldlluRdrddrrUULrddlluR" + "dlllURuulluururrrdDDDLruuuullldlddrrRdrrruuuuLLddDldRlullDRddrrULrdrrU" + "LrUULLuuurrdDLdlLDlluluururRRdDrdDLLuRdrrddlUdllURuuurrDDuulluullldldd" + "rRRDrUllldRurrdddllUUddrruLruulDlluRlluururrrdDrrddLLddlllUUruuRRuulll" + "dlddRdddrrruurruuuuLLLLrrrrddddllUUUdddddrrUUUUULuLLrrdrdddddllllluurR" + "UruUruLrdrdddddlluUUUUdddllluRRdrUUddddlUUlldRRdrUUUdrruLUUrdddddlUUUU") + +(defmaze + "###############" + "# # # ##" + "# #$$ $.*.#" + "# $ $$$ #.*.#" + "# $ $ $ #..#" + "##@###### ....#" + "###############") + +(add-solution + "UUluurrrDRRlddRRRUruurrddRddlllUUdllllLLrruurDRdrruLLLullDRdRRuLdlUrrr" + "rdLLuluurDldRdrrrdrruuluurDDurDlluullDRRllLLddrrUdllulldRRuuulDrrRurrd" + "LLrrdrruLLulldddrdrrUUluulldLLddRluurrurrddrddlllUlluurrRurrDDuulldRll" + "llddrrUdllllulLdRRluuullldddRRurrdRRuLruulDLrrrRurrdLLrrdrruLLulldddrd" + "rrUUluulldLLddRluurrurrddrddlllUlluurrRurrDDuulldRllllddrrUdllllUlldRR" + "RRuLLrruulDrrRurrdLLrrdrruLLulldddrdrrrUdlUUluulldLLddRluurrurrddrddll" + "lUlluurrRurrDDDrdLLruuuulldRurDDDrdLuulullllddrUluRRRRurDrDDuulllllddl" + "lluRdrrrUluRRRdRluurDrDulldRlullllulDrrddllllluRdllluuurrrDRRRRRRurDll" + "ddllllUdlluRuRRRRRRRurDDDuulllddllllUluRRRRRRRurDDulllddlllUluRRRRRRur" + "DlllddllUdlllllluRRRRRRluRRRRRRlllddlUluRRRRlllllllullDldRRRdrUluRRRRR" + "R") + +(defmaze + "##############" + "###.$ # #" + "## . #$ $ #" + "#..* # $ #" + "#..* # #######" + "#.#### $ ###" + "#.#@ $$$ $ ###" + "#.## # ###" + "##############") + +(add-solution + "rdrrUUUURuLLLddLLulDDDuuruuRDrdLLruuuRDrrdddddlluRdrUUUUruLLLulDldlDDu" + "rrrULulDrdLruuurDrrdddRRdLLdlluRdrUUUUruLLLulDrrruLdllldlDrrrULLruRRur" + "DllluRdrrDDDrdLdlluRdrUUUUrRRRuurrddLLLLLuLLLulDDrdLLrruurrDDDrdLdlluR" + "drUUUUrrrruurDrdLLLLLuLLLulDDrdLruurrDDDrrddrruuLLLdLUUUruLLLulDrdLrur" + "rdddddlluRdrUUUUrrrruulDrdLLLuLLLulDDrurrDDDrrddrUruLLLdLUUUruLLLulDrr" + "rdddddlluRdrUUUUruLLLrruLL") + +(defmaze + "#########" + "#.*....##" + "# #**$.#" + "# #@*. ##" + "# $#$$ #" + "## # #" + "##$$ $ #" + "## #" + "#########") + +(add-solution + "RRDDrrddlUdlluRdlllURdrruuuullDlDururrddddlluUluluuuRRRRDDlUruLLLdlddr" + "drddrruuUUddddrruuuLrdddlllluululuururrddrDrrdddlllllUUrddrruLLrrdrruL" + "LLrrruulDululuurDRDDlUruLrddrddLUUdddlluRdlllURRdrrUruullullDDuurruull" + "ldlddRluururrrdddrrddlUddlluRUddllluRRdrrruullUUllDDuurrddrrddllllluRu" + "ulluururrrDDlldddlUruurruullldlddRluururrrddllDlddrdrrrruullUdrruLrddd" + "llllluuuluururrrdrDLuullldlddrddrdrrrruullUUrDrdddllllluuuruRUdldlddrd" + "rrrruuuluuLuLLrrdrddlUlUdrruLuLrdrddrdddllUUUUUdlUdldlddrRdrUUUUruLrdd" + "rddLdlUUUUlldDldRRdrUUUruLrdrdLdlUU") + +(defmaze + "#############" + "# ....... #" + "# $.######. #" + "#.*.* ##" + "######### ##" + "# # ###" + "# $$$$$$ $@#" + "# $ $ $ ###" + "# #####" + "#############") + +(add-solution + "LLuuruuulllllllddRRRRRRdrUUruLLLLLLrrrrrddllllllluullddRRRRRRRRddddLLd" + "lllllluuurrrrrrDRdrUUUrUUruLLLLLrrrrddLLLLLLLuullddRRRRRRRRdddllullDRR" + "RdrUUUrUUruLLLLrrrddLLLLLLLuullddRRRRRRRRdddllllullDRRRRRdrUUUrUUruLLL" + "rrddLLLLLLLuullddRRRRRRRRdrUUruLLrdddlddllllllulldRRRRRRRdrUUUruLLLLLL" + "LuullddRRRRRRRRdddllllllllddrUluRRRRRRRdrUUUrUUruLddLLLLLLLuullddRRRRR" + "RRRdddlllllllddrUluRRRRRRdrUUUrUUdLLLLLLLuulldRldRRRRRRRRdddllllllddrU" + "luRRRRRdrUUUrULLLLLLLLrrrrrrrdddlllllddrUluRRRRdrUUUruLLLLLLLrrrrrrddd" + "llllddrUluRRRdrUUUruLLLLLLrrrrrdddlllddrUluRRdrUUUruLLLLL") + +(defmaze + "#############" + "# ###.##" + "# $$$ $###.##" + "# $ ##.##" + "# $# $ * #.##" + "# $# ..**##" + "# ##. .*@#" + "#############") + +(add-solution + "LUUUUdddLLuLuLLuullllddrDldRluuuurDDDuuurrrddLLrruulDrdLuLulldddddrrrU" + "UUrrrdrddlUlULulDrrdrrrrdLuluLuLLdRurDldRRRdrUUUddlllluluuurDDldRurDld" + "RRRdrUUdlllluluuulldRRurDDldRurDldRRRdrUllldRRllulullUruulldRurDDldRRu" + "rDldRurDldRlululluululldRRRurDDlulllddrURRdRRurDDluuulDldRRurDldRRRlll" + "ullullluRRRurDDllldlddrUUluRRRlldddrrUURRurDldRRlluuulDulldRllddRdrUUR" + "RurDldRluuulDulldRdRRurDluulDldRR") + +(defmaze + "#########" + "# #####" + "# $ $ . #" + "# # ** #" + "# $# ..#" + "# .* #" + "# $$##**#" + "### @. #" + "#########") + +(add-solution + "rrUULuULrddrddlUULuurrDDllLLUURRddrddlllUdrrruuluulldllddRURuurrddrruL" + "dlLLuurrDrdddlllUUrRurDllldlluRRRRuullDurrddlLrrurrdLulullddddrrrUUruu" + "LLrrddlddllluurRuurrdLDlllddrrrrUUlllldlluuuuurrDDDDrrruuluLrdrruLLrdd" + "dllluuRRurDlllddrrUdlluurRddrrddllllUlluuRDRRRuullDurrurrdLLddlLddrrrr" + "uuLUdrddlUUddllluurRuuurrdDLDuruulDrdDllllddrrrrUUllllulluuurrDDRRuLdl" + "DlluuurrDrrrrdLLullulldddrrDrrrUdrUdllllulldRRRRUrrdddllllUdrrrruuulld" + "lLullddRUrrrurrdddllllUdrrrruuulldRurDlDullLdlluRRRRurDllllluuuurrdrrr" + "DurDlulDullDDuRRlluulldddRdRRRUdlllluuuRRRRldlDldRR") + +(defmaze + "##########" + "# # #" + "# $ $ #" + "# $#$##$##" + "##@$ #" + "###$#*# #" + "#...*.*. #" + "## #$.$*##" + "##. .. ##" + "##########") + +(add-solution + "RRRDDLLLddrrrrrUULDrdLLLLrrrruuruulDDlLLDurDuuulllUluurDRRurrdLrurrdLD" + "DDuuuulldRurDDDrddLUUUdddLdlluRuuRllllUluurDrRurrdLrurrdLdDrddlLrruulD" + "uuuulldRurDDDlllllUluurDrRRurrdddlllUdrrruuulldRurDllLddllUluurDRRRRll" + "ddllUluRRRddrdDlLUdrruurrrddLLLuuluullddRRuuurrdLLLrrrurrdLLLLddRddrrr" + "uulUdrddllddrUluluullddRdRUlluuruurrurrdLddrddLLLLrrrruulDrdLLLrruuuuu" + "lldRurDDDDrdLLrdLruuuuulllddrRlluurrrdDDrdLuullllluluurDRRRRurDDDDDuul" + "llllUluRRRRRurDDDD") + +(defmaze + "###########" + "# #### #" + "#.. $ # $ #" + "#.$ $ #" + "#.*# $$ $ #" + "#...# $$$ #" + "# ... #@###" + "###########") + +(add-solution + "UUULLuLLLulDDRDDlUUrurrrdDlULulDrrruLdlllddrrdrrUUlulluulDDrrruLdlluur" + "DrrddrddllullUURurrrDrrrruullDurrddlLLLullldlddrrdrruUlURdddllulluurRl" + "lddrUluRuulDDrddrdrruuuuLLrrddddlluluuluurDDurrrddddllullUUrurrrdRRddL" + "ruuuurrddLrddLLuUllullldlddrrdrrUUlURRRlldddllulluurRllddrUluRuulDDrdd" + "rdrruuuuLLrrddddlluluuluurDDurrrddddllullUUrurrrdrrddLruullullldlddrrd" + "rrUdllulluurDldRldRRluuuurrrdrrddllUlULulDDDldRuuurrdrdrruulLLLulDDDuu" + "rrrrrddrruuLLLLLLulDDuuulDDDrurrrrrddrUruLLLLLLLulDrrrrrrrruulDrdLLLLL" + "LLrrrrrruulDrdLLLLLrruLLLDrrrddrUruLLdlUruLL") + +(defmaze + "#########" + "# ... ###" + "# . # $ #" + "##.# $ #" + "# .$$@# #" + "#$. $$$ #" + "#..* $ #" + "# .$ ###" + "#########") + +(add-solution + "UrrdddLLULLrrdrruuulllDurrrdddlluUluRddddLLUlldRuUUlDrdrRUruulDLDurrdL" + "dLruulDlluRRdrruulDrdLddrUUlulldRurDrdrruLLLuurDldRddlUULulUUrurrDDDLd" + "drUluuruulldlddldRRluuururrddldDrdrruLLLLruurDuuulldlddRdrRdrruuuuLrdd" + "ddllulluluururrDrrddddlldlUrrruuuullDDDuuuulldlddrdRluluururrdddLddRUl" + "uuruulldlddldRRluuururrddldDlluuuluRRdldddrruLdlUUUluRdddrrururrdddLLL" + "rddlUUrrrdLLulLulldRRRRULLdlUUUddrrrdddlUUruLLdlUUdrrrddrruLLdlUrrruuu" + "llDDLLdlUrrddrruLdlUrrruuLulDDLLrddrruLLL") + +(defmaze + "##########" + "# # #" + "# #$$@$ #" + "# # .#$ #" + "## # ..$ #" + "## # * $ #" + "# # *#*##" + "# $$ .*.##" + "## ... ##" + "##########") + +(add-solution + "urrdddLLdLUrrrdLulldDlddrrruUULullDDrUrrdddlllUdrrruuulldDRdrUllldllUR" + "RRRdLulllUUUUluurDDDDDldRRRRuulDrdLLdlUrrrdLruuurrruuuullllDDDDDruruLr" + "drruuuulldLrurrdLrddLUddlluRdrruuuullldDlDRddlUrdddlUllUUUUluurDDDDDld" + "RRRdrUllldRurrUUlDrurrruuuulllddDulDDRddLLdlUrrrdLullUUUUluurDDDDDldRR" + "RdrUllldRurrUUlDrdLLdlUrrrdLuuuuurDDDDuuuuuurrrddddlLrruuuullllDDDDDDl" + "lUUUUluurDDDDDldRRRuuurDrrruulDLrruuulDLulDrrDrdLrdLL") + +(defmaze + "########" + "# # ##" + "#..** ##" + "# .#. ##" + "# #.* ##" + "# $ ##" + "# $ $ #" + "#$$## #" + "# @# #" + "########") + +(add-solution + "llUUURRuRuruulDrdDlldllUUruRRDrdLrDDrddlUUULuuulldlddrRdRUrDrddlUruLul" + "llluururrdrDDuuluurDDlulldlddrrrUUruLdddrUUddDrddlUUUlldRlulldRlddrUUl" + "uuuruulDDDDDrRuruuuLrdddldlluuuuurDrrdddrDLLruuuullldddRRdrUrdrddlUruL" + "ulllluuurrrdrDDuuluurDDlullldddrrrUUruLLrdddrUUddDrddlUUUlldRlulldRddl" + "UUUUUddrrrrDlLullddrUluRRdrrrddlUruLLLulDrrruLuurDDDluuuuurDDDlddlluRd" + "rUUUruLddddlllddrUUluRRdrUUUdddrrddlUruLLLullddrUluRRdrUUrDDrddlUruLLL" + "ullddrUluRRdrU") + +(defmaze + "###########" + "# ########" + "# $#### ##" + "# $ ##" + "## .*$# $ #" + "## $*.$ #@#" + "###...$ ###" + "###.*** #" + "####..# $ #" + "#### # #" + "###########") + +(add-solution + "uLuLLLrrDDDDrrddllUUULLDRlLddrUluRurrUUruulDllDDDDurruUruLdddlluRluLLD" + "RRddlUrrrULrdDrrddllUULulldRRllddrUluurrdLrRddrruuLLLuurDldRlullURdlDR" + "ddlUUrurrdLrddrruuLLuuUruulDDDDlluuuRlddlluuRRdddDlUruuullddRluurrdLdd" + "rUdrrDLruuuruulDDDLdlluuurRlldddrruLdlUrrruruulDllDDrrUruLddlddrUUllld" + "RldRlddrUUluurrrddLLrrrrddllUdrruulLuuUruulDDDlluuRllllluurDldRRRRddld" + "DrddlUUrUUrrDDLrrrddllUdrruulLuuuruulDDDlllllUUrrrRllllddrrrdDlUruLddd" + "drUUluurrrDDLLUlDrrrrrddllUdrruulLLruuuruulDDDDuuulllllluurDldRRRRRllD" + "DRdDlUUrddrRddrruuLLLLrrddrUruLLLruLLrruuruulDllDDuurrDDDDrddlUruLuuLr" + "uulllllddR") + +(defmaze + "##########" + "##### #" + "# $$ #" + "# ..# #" + "##$.#$#$##" + "# $.# $ #" + "# .*.$$@#" + "###....$ #" + "##########") + +(add-solution + "uLUUruLdddrddLUUUUllDDRluurrruullDulDLLdlluRRddddlluRUruulDruRRurrrddl" + "dDlluUddrruuLrruullDLrurrdLdddlluURlddrrrddlLLULLdRRuUrrrddlULLdRurruL" + "uUllDDRluurrruullDulDLLdlluRRRRurrrddldDlddllluUUUddddrrruuruuruulDDuu" + "lldRllLdddddrrruuluUddrddlUUrrrdLullddlluuuuurRurrrddlDDuuruulDDuulldR" + "llldddddrruuUUddddlluuuuurRddddLrurrrddLUruLdLLuuuuurrrddlDDrdLuuuruul" + "llddddRluuuurrrddlLrruullDllldlluRRRRurrrddldDllddllUUUdddrruLdlUUlUdl" + "dRRdrruLdlUrrurrrddlLLLruurrDrdLLLrruuuuruulDDDDuuuulldDDDDurruuuLulDD" + "DDrDLLrrurrdLLLrruuuLulDDD") + +(defmaze + "###############" + "# ### .. #" + "# $# $ ##.*. #" + "# $ $ $**.#" + "# $ ##$$ ...*#" + "### #@ ### #" + "###############") + +(add-solution + "rURRRRdrrUdllullllULLLLrddlUlUdrruLdlluuurrDDuullddRdRUrrrrdrruLLrrdrr" + "drruLLrUULDLLdlluRRRRuulDrdLrurruLrdDLddrUUlulldRlLdlluRRRurrDLrrddllU" + "LLrrdrruulullDurrdrddlluUllllLLLLdlluRRRRRRRRRuulllDurrrddllLLLLLrruRd" + "rrrruulllDurrrddRddrruuLuuLLdRDrrddllUUluurrrDDlllllLulldRRRRRRRllllll" + "lllddrUluRRRRRRRRllllllldllluRRRRRRRRdRUUdllllllllluurDldRRRRRRRRdrUll" + "lllllluurDldRRRRRRRRllldRR") + +(defmaze + "###############" + "# # @# ....#" + "# $ $$$ ##..#" + "# $ $ $$$ **#" + "## ## ...#" + "###############") + +(add-solution + "lDLdLdllUluurrrDrrRddrrULdlULullulllddrdrrUdlluRlluurrDRlullddrdrUdrUR" + "RRdrruLLLuurDldLLdlluluurrrDRlulllddrdrrUdlluRlluurrDRlullddrdrUdrUrrR" + "drruLLrrdrruLLrrdrrULuulllDurrrdddlluRdlllluuRDRdrruLLrrdrruLuulllDlld" + "dRRRllluurrDrdLuuurrrrDlddLruuulllddrRdrUUruLLrddlllulldRRRRdrUUruLddl" + "llllLLLdlluRRRRRRRRRdrUUddrUUdlllllllllllluurDldRRRRRRRRRRRdrUllllllll" + "llluurDldRRRRRRRRRRllllllllluurDldRRRRRRRRlldRRRUllllluulDLdRRdRRRRllu" + "ulDldRRRlllulllluurDldRRRRRRRR") + +(defmaze + "############" + "# #######" + "#*$ $## ###" + "#.#..#@$ ###" + "#.*.$##$ ###" + "##..*.* $###" + "## * ..$ ###" + "## . ### $ #" + "#### $ $ $ #" + "#### #" + "############") + +(add-solution + "RDrDDLLLuLLuLrdDlUrrrdrrruulDLdlLuRdldddrrrruUULLLulDulldRurrdrruLLLLd" + "RurrrdrdddlllluUUluRRlddddrrrruuullLrrrdddlllluuUrrruurDDllluRdllluRRl" + "luurDluuullDurrdLrurDDldddrruLdlUUUrDlddrruLdlUUrdddddrruLdlUUUruLdddr" + "rdrruLLLrrrdrruLLLLdllUUUrrrrDuuuluurDDDDlUUddlluRdlllURRdldddrruLrrdr" + "ruLLLdllUUUrrrrDulllldddrrrrruLuuuulDrddddlllluuuruRdllluRuuuulldRurDD" + "DDRdLdddrruLdlUUUUUddddrrdrruLLLdlUUUruLdddrrrruuLLrruulDLrrdddrruLdlU" + "ULuuruulDDrDLrDDrdLLLLdlUUU") + +(defmaze + "#########" + "# $ *. #" + "#....$# #" + "#..# #" + "#*. #$ #" + "#. $ #" + "##$$$$$ #" + "##@# #" + "#########") + +(add-solution + "UUUUluRRuRRDulldRdRDrrdddlUdllURdrruuullulullddddRlulUrrDluuurrdrdDLLr" + "rurrdLrddlUUruuuuLLDlllddrdrRlluluurrrurrddddddlllURuuUluluRdllluRdddr" + "dRdrUllulldRdRRuLrddrrruuLLLdllUluUrurrdrDululldlddrUddrruLrddrrruulLu" + "ulullulDDurrrdrddrrddlUdlluluulUluRddrddrRuuuluuRDDDDLddrrruuuuLrddddl" + "llullUUrDldRluuUluurDDDrdrruUluuLrddrddlluluuRurrDDrrddLLLrrrddlllUllU" + "UUluRluRRlddddlUUrdrDRddrrruulLLddrUluLulldRdRRuLdlUUUdrdrddrrruulLLLd" + "lUUrdrrrruuuuLrddlDrdLLLLdlUruLdlUrrdrrruulDrdLLLdlUruLrdrddrrUruLLLLd" + "lUrrddrUruLLLL") + +(defmaze + "###########" + "## ## @#" + "## $ $ ###" + "## ## #" + "### ## #$.#" + "### ## ...#" + "### ###.$.#" + "# $ ### ###" + "# $ ##" + "### # ##" + "###########") + +(add-solution + "lllDDrrrddlldddLLLdlUUUUUUluurDRRRdrrrddlldddlllluuuuUluRddddddlluRdrU" + "UUUUluurDDDDDDldRRRRdrruLuuurruulllulLrrdrrrddlldddLLLLulldRRRRRdrUlll" + "luuuuuluurDDDDDDldRRRRdrruLLLLLuuuuuurrrdrrrddlldDuurruullluurDllllddd" + "dddrrrdrruLuuulUUddrdddLLLdlUUlldRRRRRdrUlllluUUUUluurDDDDDDldRRRRdrru" + "LLLLLuuuuuurrRdddrdDuurrdLulluuulllddddddrrrdrruLuUddLLLdlUUUUUUluurDr" + "rrdddRdrruuulLrrdddlluRdrUdllddllllulldRRRRRdrUlllluuuuUluurDDDDDDldRR" + "RRdrruLLLLLuuuuuurrrDrrDDldDuuruulluurDllllddddddrrrdrruLuuulUUddrdddL" + "LLdlUUlldRRRRRdrUUUddlllluUUUUluurDDDDDDuuuuurrRdddRRuuLrddldddlllLuuu" + "uuurrrurDllllddddddrrrruuuluUddrruuLuLLLrrrdrddlluUddrdddllllulldRRRRR" + "drUlllluuuuuluurDDDDDDldRRRRdrruLUURuuuluLLLrrdddRdddLLLLulldRRRRRdrUU" + "UddlllluuuuuluurDDDDDDldRRRRdrUU") + +(defmaze + "###########" + "# #####" + "# $ $ # #" + "#### $ #" + "##### $$# #" + "##### $ #" + "## ### . #" + "## $# .*..#" + "##.*.$*$ #" + "#@$ ....###" + "###########") + +(add-solution + "RRRRRURUrruuuuLLLuLulldRdRRRRurDDDLLUdrddlUUdddldlluRuRlddrUrUrrdLLLdl" + "luRuRRdLulDrrrruLLruurDuuulLLuLulldRdRddRRDrruuullLuLDrrrrdddlluUddrdd" + "lUUddlluRdrruulDruruuulLLululldRdRRRdDllURuuLDrddrDrruLdddrUdlLUlldRRu" + "ruuruuLLLddRDrdrUdlLdlluRRuuluurDDDrrULdlUrrdddLUdLUlldRRurruullDurrdd" + "lLdllldlluRRRuRRdLdLLuRdrUlllldRRRllluuurDDldRRurrruuurrdddLLLLLdlluur" + "DldRurrrruuuluurDDDDuurrdddlLLLLLrrrruuuuurrDDllluuululldRdRRlluurDldR" + "urDRddrruuLLdddddrruUUllllURlUluurDrDrDDDDuurrdddlLLLLrrruuulluRuulldR" + "urDrDDDDuurrdddlLLLrruuulluRlulululldRRRurDldRurDrDDDDuurrdddlLuuulluR" + "urDDDuuurrDDD") + +(defmaze + "###########" + "## .*.#####" + "## .$.$ ###" + "###.....$ #" + "# .#*### #" + "# $ $@# #" + "### ##$$$ #" + "### # #" + "### # $$ #" + "### # #" + "###########") + +(add-solution + "LDDrrruuuuLLLLLruuLDlluRRdrdrruLLLulldRDRRlluurDrrrdrrddddllluuLUUddrd" + "drrruuuullulLdddrrDldRluuluuuLulldRdDDDDrddlUUUUUlldRurDRRuuuLulldRDRl" + "uurDrrrdrrdddLLuLLLLUUddrrrrdrruuullullDRlululldRRldddDDrddlUUUUUURRlu" + "ulldRurDlddlldRurDDDrddlUUUUrrrrddlUruLLLLUURuulldRurDlddlldRurDDDrddl" + "UUUUrrrrdrrdLrddlllUUUruLLLLUUUluRdddlldRurDDDrddlUUUUrrrddddrrULdlUUU" + "ruLLLLUUUddlldRurDDDrddlUUUUrrrdddrrULdlUUruLLLLUUdlldRurDDDrddlUUUUrr" + "rrddrruLLdlUruLLLLUlldRurDDDrddlUUUU") + +(defmaze + "################" + "###### ### #" + "###.## $$ #" + "###.# $$ # ##" + "###.# # $$$###" + "#..... # $ #" + "# #### ###@#" + "################") + +(add-solution + "uLLLLdlUrrrUUlDrdLLdlluRURRllddrUruurruullDRlLLDDRdrrUUdLdldlluRuuurrD" + "rddlLdlUrrruulDrdLLdlluRURRllddrUruuullDDuuLLulDDlddrUrURuLddlluRRuulD" + "DrdLulDrdLLLdlluRdrUUUddrrruruurrrrurDurrdLLLLLLLulDDrdLulDrdLLLdlluRd" + "rUUdrrruruurrrrdddldlluRuULLulDrdLulDrdLLLdlluRdrUrrrururuRRRdddLdlUUU" + "ddrruuulLLLulDDrdLulDrdLLLLrrrrururrddrruLdlUUdrruulLLLulDDrdLulDrdLLL" + "rrrururrurrurrddLruLLLLLLulDDrdLulDrdLLrrururrdrrUruLLLLLulDDrdLulDrdL" + "rururrdrrdrUUruLLLLLLulDDrdLulD") + +(defmaze + "###########" + "### .. ####" + "###$*.*. #" + "# $@#*.* #" + "# $$# ..###" + "# # $ $. #" + "# $ $* #" + "# ###" + "###########") + +(add-solution + "LDDRdrdrrULURuuurrdLulLulllDDrUluRdRRRDDDlddlluRlulUUrurrrdddlLddllUdl" + "luRRdrruurruuullldldDRRddlULrrdrrULLdlluuuururrrddDuuullldlddddrruuuRl" + "dddlluRluuuruulDDrurrrdrruLLLLLdlDDRddrruUrUdlddlluuRlddrruLuuRDllluur" + "urrDurrdLullldlddrrrrUUddllddrrUUdrruLLddlluRRllulluururrRdDDLLddllURR" + "dlllluRRdrruurruuullldldDRRddlULrrdrrULLrrUrrdLLdlluuRRddlllluuuuruulD" + "DrurrrdrruLLLLLdlDDRRddrruuUdddlluuuRldlluururrDRlulldlddrrddrruuLUdrd" + "rruLLddlluRRuUllDurrddlUllluururrrDDDlddllURdllUdlluRRdrruurruuullldld" + "DRRddrrULdllULuuururrrddDuuullldldddrdrruLuuRUruLddDrUdllddlluRluuuruu" + "lDDDDRRuruuLrddldlluurUrrddrdLuuurDurrdLLullldlddrddrrUUrUUddlddlluRlu" + "luururrRdddlLddllUdlluRRdrruurruuullldldDRRddlULrrdrrULLrrUrrdLLdllllu" + "uuururrrdDDuuullldlddddlluuuuRlddddrrrruuRRuuullllDrurrrdddlluRUruLLrd" + "ddlddrUUUUruLrdrruLdllddrUdlddllluRRdrUUUURddlddrUUUddrruLdlUddllllllu" + "RRlluuurrDDRRRddllUdlluRRRdrUUUddllllluuRurDDRRddllluRRRRU") + +(defmaze + "#########" + "# #" + "# $ $ $ #" + "##### ###" + "#@### ###" + "#$### #" + "# $ $ #" + "#.** $ #" + "#..# $ #" + "#.** #$ #" + "#..... ##" + "#########") + +(add-solution + "DDRRRddddrrUruuLLrruullDlDRlulllDDrURurrurrddddldllllUUluuRRllddrddrrr" + "ruruuuullddLDDLdRuuuruurrddLrddlULrruuulldDlDRuuurrddLruulldDldDldllUR" + "uURRddLruulldDldRuuulDrurrRuurrddLLLLuRdddlluluuRRlDrrrrrddlULrruLLLLL" + "DDrrUruLLulDDlDRuuulDDrurrrrruulDrdLLLLLulDrrrrruulDrdLLLLrrruuuuuulld" + "RurDDDDDrdLLLulDDurrruuuuullulldRRRurDDDDDrdLLLulDrrruuuuuurrdLulDDDDD" + "rdLLLuRdrruulDrdLL") + +(defmaze + "################" + "# ######" + "# $ $ $ #.*... #" + "# #### .#.*# #" + "## $####$#..*..#" + "## $ $ $ * ##" + "##$### $ ####" + "##@### ########" + "################") + +(add-solution + "UURUUlluurrrrrrrrdRRddRRllddLLuRdlLLuRdrruuruulldlDDuuruullllllllddrrd" + "dRRRRdRUllllluulluurrrrrrrrdrrddlddLruuruullullllllllddrrddrrrrrRdrrUU" + "rrdLullDllllllluulluurrrrrrrrdrrRDulllullllllllddrrddrrrrrrrurRuulllul" + "lllllDDlluRurrrrrrrdrrrddlldllllllllUUddrrrrrddlUrurrdLLrrururrdLdLLuR" + "drUlllldRRurrruuullldlDDrruRUruLdddrUdlllluuruullllllllddrddrrrRRRRRur" + "uuLrddldlllllllluuluurrrrrrrrDrrddldlllddlUrurrdLrururrdLdLLuRuruurDlu" + "llullllllllddrddrrrRRRRdrrUUUruLLrddddlluRdrUUUruLdddrUUddlllllllllluu" + "rDldRRRRRRRRdrUluRdrUdllllllddrUluRRRRdrUluRddllLullddrUluRRRRdrUUUddl" + "lllllllluuluurrDDDldRRRRRRRdrUllllllluuuurrdLulDDDldRRRRRRRRRllllllllu" + "uurrurrdLLLulDDDldRRRRRRRRdrUUdllllllllluuluRurDDDldRRRRRRRRdrU") + +(defmaze + "#############" + "# #### ...#" + "# ..*.*..$ #" + "# $$.#. ###" + "# ## $ ####" + "#######$$$ ##" + "# $@#" + "# $ #####$ ##" + "# ##### ##" + "#############") + +(add-solution + "LLLUUUlluLLLulldRlddrURlluurDurDrrrdrrruulDrdLruurrdLullddrUluRRdllLLL" + "LLulldRRRRRRRddddrruLdlUUUrULuRddlddrrdddlUUruLdlLLLLLddlluuRRRRRRRUrD" + "luUUruulDLLLLLulldRRRRRRRDDurUlllddRDRdLuuluulllllddrUluRRRRRRRdDlluul" + "lllddrUluRRRRddrruuLLLLrrrrdLdddrUdrruLLdlUUUruLLLrrdddrrrdddlUUruLLdl" + "UUUruLLrddddLLLLddlluuRRRRRRRurrddlUruLLdlUUUruLddddllllddlUluRRRRRRRu" + "rrddlUruLLUUdddlUUU") + +(defmaze + "#########" + "## #" + "# $ $$$ #" + "#. ##@$ #" + "#. # $ #" + "#.# $ $ #" + "#.*.$ ##" + "#.*... ##" + "#########") + +(add-solution + "DrruuullDLullDldddddRRuRRUdlluRuRUdlddrUdlldlluRRurrddLLulluuuururrrrr" + "ddddLruuLDruuullllldlddddrruruRDlldlluuuururrrrrddddLruLruuullllldlddd" + "drrdrrrUUddllluurDllluuuururrrrrddddldLruruulDDruuuullllldlddddrruruRl" + "dldlluuuururrrrrddddlLdLLrruulDrrruLdlddrUUllldRldRuurrruuuullllldlddd" + "ddRluuuuururrrrrddddllldlLdlUrrrdLruurrdLrdLruuruulDDruuuulDDuulldRlul" + "ldRRlllddrUluRurrrrrddddllddrUlulldllUUruuurrrrrddddLruulDruuulllllddd" + "lddrruruRDllddRUllldRluuuruuurrrrrddddLdLLLLdlUUdrrrrruruulDlDurrdLdLL" + "LLdlUrrrdLLrrurrdLLLrrruuulDrdLLLLrrrruruuuulDulldRDDDDrdLLrruuruuuLul" + "DDDDDuuuululldRRurDDDDrdLLLrrruruuLulDDDrdLLruulDD") + +(defmaze + "############" + "# $ .....#" + "#@$$$ $* ###" + "##$ ##.####" + "# $## .. ##" + "# # .#$ #" + "# $$ ##.* #" + "# ## #" + "############") + +(add-solution + "uRRRRRRRRllDulldRlullDRlulldRDDldRlddrUUUdddrruuLrdLdlluuurUUluRRRdLul" + "DDurrdLruuRRdLruRRdLDDrrDrddllluUUUUruLLrddddddrrULdlUUUUULuLLLddrURRu" + "RDDDrrDrdLdlluUluRuulllluRRdlllluRRddDDrddllluuuRUruulldRdrruruLrdrruL" + "dlldlluRRRRurDDDDuuullldlldldddrrruulUUluRRRRurDDDuullldlddrddlUUUUluR" + "RRRurDDullldldllddRdrUUUUluRRRRurDllluRRdlllluRRRdldldlldRdrUUUluRRRR") + +(defmaze + "################" + "#######@########" + "# ####$# #####" + "# $#### $. #####" + "# .#* #####" + "###### *...* #" + "#### *.** $$ #" + "#### $ ##.$ $ #" + "#### ##. # #" + "################") + +(add-solution + "DDRRurDDDlDDRUlulLrrUruulDDDDrURRDrruLLLLdRlddrUUluUluurDDDDrddlUUrRur" + "rdLrddlULrruulDulDlllUlldRRRlllLddlluuRRRurrdLruUruulDllDlDRRdrrUUddll" + "ullDllddrrUURurRdLLrrrRRurrdLLLLLulluurrDrDLdRRRuLLdddrUUrurrdLrddlULr" + "ruulDulDlluuluurDDlulldddLrRRUUruLdddRUUddRRurrdLrddlUULuLLdRlddrURllu" + "urrDullddrUluuluurDDDDlUUrddrruLLdllllddlluuRRRuulDrdRRRuulDruuulDrddl" + "LdlLuuruRRDrdLrrrdrruLLrrdddlUUluLLdRdRluurDrruLLdlluuluurDDlulldlddrr" + "RUUruLdddRUUddRddlUUrRurrdLrddlULrruulDulDllluurDldRRRuLLdddrUUluuluur" + "DDDDlUrdrruLLrdddlUUllllddlluuRRRRRRdrUrurrdLrddlULLrrruulDulDlllllluu" + "ruRldlllllluurDldRRRRRddddlUluRRRRRRRRurrdLLLLLLLrrrrddlUruLLLrrrrrrdd" + "lULrruLLLLLrddrUruLL") + +(defmaze + "################" + "##@#### #######" + "# $ # #######" + "# $$$# . ## #" + "# $ .##*$# #" + "####...... #$ #" + "########.#$ #" + "########. $ $$ #" + "########.* # #" + "################") + +(add-solution + "DrrrDDldRRRRRRllddrRUrrrUrdddlUUruuulldlDLdRlddrURlluurDldRuuururrdddl" + "LrruuulldldDldlluuRRllUUrDldRluuluurDDrddlUdddrrurrrruuulldlDLLrddlluU" + "rrrururrdddllLulllddrrdrUllldRluuurrDurururrdddllLdLLdlUrrrdLLrruuulll" + "llluuullllddRRRllluurrrrdDldRRRRRRDDrdLruurrruuulldlDururrdddllLulllll" + "luuullDRurDDldRRRRRRDrdLLrrurrruuulldlDururrdddllLullllllluululldRRRur" + "DDlulldRRdRRRRRRDrddlUUrrrruuulldlDLLLLLLrrrrrrururrdddddlULLdlUUdrruL" + "uLLLLLrrrrrddlUruLLLLrrrrdrdrruLLLdlUruLLLrrrdrrruuLDrdLLLdlUruLLrruRu" + "rDDrdLLLdlUruL") + +(defmaze + "#############" + "###. * # #" + "# .*.*.# $ #" + "# ..* # $ #" + "##.* ####$$ #" + "#...#@$ $ #" + "##.# $$ $ ##" + "##$$ ## ##" + "## ########" + "#############") + +(add-solution + "DRRuRRUUddlldlllddllUUUrUrUrruuLLDLDlDurRdLruuurrdLulDldlluRRdddLUruul" + "ldRurRurrdLLLDDrUluRurrddLLdlluluRRlddddddrruLdlUUUUrrurruullDurrddlUl" + "lDulldRddddrrurrdLLLdlUUUUUluRRRRllldddddrrrrururruuluurrrddddLLrddlUU" + "rruuLDDruuuulDDuullddRluRurrddddlldLLuRRdllLdlluRuRRdLulDrrrruLLrrUUlu" + "urrrddddLLddrUluuuluurrrddddLruuuulllddrdDrdLLLuRdlLdLLLdlUUUUUluRRRll" + "dddddrruRuRRdLulDrdLLLdlUUUUUluRRldddddrrrrurrrruruuuulllddrdDrdLLLLul" + "DrdLLLdlUUUUUluRdddddrrrrurrruuuluurDDDDrdLLLLulDrdLLLdlUUUUUddddrrrru" + "rrrruruuuLulDDDDrdLLLLulDrdLLLdlUUUUdddrrrrurrrruruuLulDDDrdLLLLulDrdL" + "LLdlUUUddrrrrurrrruruLulDDrdLLLLulDrdLLLdlUUdrrrruruRdrruulDrdLLLLulDr" + "dLLLdlU") + +(defmaze + "##############" + "######## ###" + "###### #$###" + "#####..### ###" + "# # . ## ###" + "# .** # ##" + "# $*...** ##" + "### $ $. ###" + "######$##$####" + "######@## ###" + "####### $ $ #" + "####### #" + "##############") + +(add-solution + "UURULULuurDldLddRUrrdLulUUrrDLddrUllldRuruulDrdLulLulldRRRRddllUdrruul" + "LddrUrrrdLLuuuruurrurrDDDDrdLdlLLulluurrDrDLdRluuuluurrurrdddddLLdlUrr" + "ruuuuulldllddldddRluuuruurrurrdddddlllLUUdddlUlluullddRRRRdrUUdrrdLrur" + "rdLDDrddlUUUUruLLLdRluLLdRRurrDDDrddlUUUUruLLLdRllluLLdRRRRuLLrrrrDDDr" + "ddlUUUUruLLLdRurDlllluRRRdllllluRRRllluullddRRRRlluulDldRRdrruLrdrrruu" + "LDLLrrrdrruLLLLdRurrdDDrddlUUUUruLLLrrdddddlluRdrUUUUruLLrdddrddrruLLd" + "lUUUUruL") + +(defmaze + "###########" + "# ## ####" + "# $#@$ ####" + "# #$$ ####" + "# $ $ ####" + "# $#....#" + "# $$ ...# #" + "### ..* #" + "###########") + +(add-solution + "RurDDDDrdLdRluuuLLDllluurDRRRUrDDrddlllUUluRdddlUruulllddRRUdlluurDrru" + "LdddrrrruuluLLdllldRluuurDDrruLrrrdrddlllUUddrrruululLdddrrUdlluRRlluu" + "rrDrrrddLLLrULuRRllulldllluurDRRdddlUrRRdrUluRdllluulllddRRRRRdrUllluu" + "llDldRRRRRlldRRuuuuuulDlDDDDuuuRurDDDDlluuRurDllllluuurDDDDldRRRRluulD" + "ldRRldR") + +(defmaze + "############" + "###....*.. #" + "#####$#.*. #" + "# ## ###*##" + "# $@# . #" + "# $$#$$ . #" + "# $$ $ $# ##" + "# ##" + "############") + +(add-solution + "LLLrDLrurrDRRurrdLddllllllUUrurrdrRurDlllulldlddrrrrUdlllluururrdRddll" + "lllluuRluurDldddrrrrrruulullLDrurrdrRurUULuLLLLrDDuurrrdrddldlluLrdrru" + "rrdLuuuruLLLLLdddrdrddrrUUUUddddlluululuuurrrrrdLdddddlllUdllURRdrrruu" + "uuuulllldddLDuruuurrrrddddddlllllllluuRRlluurDldddrrURdrrrrruuuuuullll" + "dddlLDurruuurrrrddddddllllluUddrrrrruuuuuulllldddrDrRllulLdddrrUdrUdrr" + "uUUUUruLLLLrrrddddddllllluRRlluurrDRRllullddrdrrrruUUUUruLLLrrddddddll" + "UdlluRuRRllddrrruUUUUruLLrddddddllUluRRlddrruUUUUruLddddddlllllllluuRR" + "llddrURRRRdrUluRRlddrruUUUUdddlllullDldRRRdrUluRRlddrruUUUddlldllllllu" + "RRlluurDDldRRRRRdrUluRRlddrruUUdlllullLdlluurDDldRRRRRdrUluRRlddrruUll" + "lullDldRRRdrUluRR") + +(defmaze + "##############" + "# ..........#" + "# ###########" + "## # ########" + "##$$ #######" + "## $ #######" + "####$ #####" + "#### ##$#####" + "#####$$ $ ###" + "####@$ $ ###" + "####### ###" + "##############") + +(add-solution + "RUUlUUllUUUluRRRRRRRRRRlllllllllddddrrRuulDLdlUUUluRRRRRRRRRlllllllldd" + "drrrdLddrUUddddRRuLrddrrruuLLLddrUluRdlllUUluurDrrrDDldlluUddrruruullL" + "uluurDDDrrrddldlluUlUUrurDllddrURuululDDulldRurrrddlUruLLLdlUUUluRRRRR" + "RRRllllllldddrdRurrddlUruLLLdlUUUluRRRRRRRlllllldddrrrdddlUUruLLdlUUUl" + "uRRRRRRllllldddrrrdddddrruLdlUUUUruLLLdlUUUluRRRRRlllldddrrrddddrrruuL" + "LLdlUUruLLdlUUUluRRRRllldddrrrddddrrddrrruuLLLLdlUUUUruLLLdlUUUluRRRll" + "dddrrrddddrrddrrUruLLLLdlUUUUruLLLdlUUUluRRldddrrrddddrrddrUruLLLdlUUU" + "UruLLLdlUUUluR") + +(defmaze + "###########" + "#### . ###" + "####$$. $@#" + "# . *$###" + "#...*** #" + "# **$.* $ #" + "# $.# $ #" + "# $.## #" + "###########") + +(add-solution + "LLDDrDuluLLDLLDuullddddRluuuurrRdrRuruulllDDRdrDRUrrdddllUUddrruLruulD" + "lluRlluluurrrdDLddrrrddlllUlURuuruulllddlddRRdrURUUlLDRddlUlluuRuurrDD" + "DuuullddRluurrdLdllddrrULulllddRRUruLrdrrULdddrUddrrruuLLrrddlUdlluRll" + "uuurrDDLUluuurrDDLruulldRddlUdlluRdrruuullDDuurrdLrddlUrdddlUruulllddl" + "luuRlddrruLrdRRULrruuullDDuurrdLrddlUddllluuRRDLrrruuullDDRluurrdLddrU" + "dlddrUddrrruuLLrrddlUdlluRlluuurrDDLUluuurrDDLdlUrdddlUruulllddRRULrru" + "ruulllDDuurrrddlLdddrUddrrruuLLrrddlUdlluRlluuurrDDLUluUluRdddrddlUlll" + "lddrUluRRRRdrdrrruuuLLdLLLLrrrrurrdLLLLLrrddrrUruLLLddrUruL") + +(defmaze + "##############" + "### ## . ###" + "###$ #.* $ #" + "# $ #$*...## #" + "# $ #@##*.. #" + "# ## ** ##" + "# $ $ # ####" + "# # ####" + "##############") + +(add-solution + "URuLrdRRDrDLuuuurrdLDlddrUrrruuLLullDDuurrdLrrrddlllUUdlllluullDDDDlld" + "drrURRRdrrrUUUrrdLulDrruruulllDlllluulldddDllddrrUrrruRRRUrrruulllDlDR" + "lullluulldddDllddrUdrUrrrdrrrUULuullluulldddDuuuurrdrdrrddrddllllulLdl" + "luuuuRlddddrrurrrdrrruuluurDuurrrddlLLulllluulldDllddddrrurrrdrrruUlUR" + "uLLrrurrrddlLLdddllluuRRllddrrruUlURuurrrddldLruruulllddRluLddllddrrru" + "UruLdddllUluRRUdlddrruUruLuurrrddLdlllldlllldlluRRRRRdrUluRRlddrruUUUd" + "dlldlllllluuurrDDuulldddrRRRRdrUlllllluuRDldRRRRRuRRRddllUluRRlddrruUU" + "dlldllllluuurDDldRRRRdrUluRRlddrruUlldlllluuuuurrdLulDDDDldRRRRdrUluRR") + +(defmaze + "###############" + "## .. #########" + "## $.$ ########" + "###.*. # #####" + "## * * # ##@##" + "## * ## ##$ #" + "# *. #### # #" + "# ** ####$ $ #" + "# $ ##" + "#### #########" + "###############") + +(add-solution + "DrddLdLLLUUrddrruLLdlLLLLdlUllluuRDldRRRULrUUrUruuLDLDDDLddlluuRuRldld" + "drrrRRRRRRurrdLLLLLLLLLuUrDuUrUruulDlDDDlluuRlddrruLrrUruululDulldRDDu" + "uurrdLrrddlULuurDrddldlUUdddlddRUUddRRRRRRurrdLLLLLLLdlUluulldRurrUrur" + "uulDlDllDDrrUdlluurDrrUruululDulldRDDuuurrdLrrddlULuurDrddldlUllddlddR" + "RRUUULulDrrruLrruullDDrdLuuurDluulldRRurDlddddddRRRRRRuulDrdLLLLLdlUUU" + "UUUUruLdddddddrrrrrrurrruulDrdLLrdLLLLLLLdlUUUUUUUddddddrrrrruurDrdLLL" + "LLLdlUUUUUUdddddrrrrruuUluurDDDDrdLLLLLdlUUUUU") + +(defmaze + "###############" + "# ## *...#.##" + "# $ # $ ***..##" + "# $ $@## *.. ##" + "# $#$$$ ##.$ #" + "# #" + "###############") + +(add-solution + "uRuRRDDRRlluuRDRdRddrruLUULrdddllllUURRRurDllllddlllURdrrrrrUdllluurrR" + "lluullldlDururrrddlddlluRdlllllluuuurrddRluullddddrrrURRdrrrrruulluull" + "ldlDururrrddlUruLrddrruLdlluurDrrdddllllluLuurRRdRRlluurDllllddrdrrUUd" + "dllluuurrRdRUrrDLulldddrrrUdrruLdllllllllllluuuurrddRluullddddrrrrrrru" + "uulllDurrrrrrrDLullldddlluRdrUUddllllURuurrRRRRllllllddRRdrUUdllluurrR" + "RRlldddllllllluuuurrddRdrrrruulllDldRRRdrUUdllluurrRRldddllllllluuRRRd" + "rrrruulllDlluulDldRRRdRRRdrUUUlllDldRRRdrUUdllluurrRdddllllllUluRRRdrr" + "rruulllDldRRRdrUUddrrrUdrruL") + +(defmaze + "###########" + "######## #" + "#### #$ #" + "### $ #" + "# #$##$ #" + "# $ *.#@ #" + "# $#$...# #" + "# #.$# #" + "# $$#..$ #" + "#### ....##" + "###########") + +(add-solution + "rdddLdlluuuuLrddddrruruuuuuLLLulldRDDrddddrruruuuuullLulldlddRlulldddr" + "rrURUrDlldllluuurrururrdrrrdddddldlluRdlllULulluuurrdRdrrrDulllululldd" + "drrdrdrruUruLdddrUdlllululluuurrururrdrrrdddddLruuuuulllulldRRllldlldd" + "drrdrdrruuuuLUdrddddllululluuurrdRdRlululldddrrdrUllluuRDuurururrdLdDr" + "DullLullddrUdlddRUrrUdllluurruuRurrdLddLLuuRurDllddrddddrrrruruuuuulLL" + "ulldlddrrrdLulluururrdrrrdddddldlllluuUdddrrrruruuuuulllulldlddRddddrr" + "uRdllluuurrrDullldddrruUruLdddrUdllluullluuRDlddrRuruuLuururrdrrrddddd" + "LdllllUllluRluuuRDDlddrrrdrruuuuLLLrrrddddllullluurUrrdRurDllulldlddrr" + "rdrrrruruuuuulllulldlDururrdrrrdddddldllllullluuruRRdrrDDuullulldlddrr" + "rdrRRluuuuLrddddllullluururuururrdLDDrddddllullluururRdRluluuRurrdLdDr" + "DDDRdLuuuulldRurDDDuulluluuRurDDDldRurDDurDDululuuurrrrdddddLruuulUruL" + "LLulDDDllldlddrrrUURurDluuullddRluurrdDldRRllddllUUluRRRluurrdDlllddRd" + "rUURldllluuuRdrRRuurrrruulDrdLLLulDDDuullDldRR") + +(defmaze + "#############" + "####### ###" + "###### $# #" + "#### $ ### #" + "# . $$@$ # #" + "# **.#$$ #" + "##$..# $ # #" + "##.*. # $ ##" + "##....### ##" + "#############") + +(add-solution + "DRRddRdrUUruuuullullDlDllDDDDuuulDulldRDDRluuurrdLrdLddRUUluulldRurrur" + "rururrdrrddddldlluullUdrruLULrddlULLLDDrdrrUUruLrrdddrruruuuullullDDul" + "DruurrdrrddddldlluullddlluluuruRRlldlddrddlUUrdrruurrddrruruuuullulldl" + "dlldDDldRuuuurrururrdrrddddldlluullULrdrrddrruruuuullulldlDllDlDlluRRd" + "DrddlUlUdrruLuuRurrururrdrrddddldlluullddLLdlUUrdrruurrddrruruuuullull" + "dldlldDDDrruuULulDDDuurrdddlLulDruuulDulldRurrdddllUdrrrruurruLLLulDDD" + "uurrdddlLLrrruurrddrruruuuullulldDuurrdrrddlDLLuLLLulDDDuurrdddlLrruuu" + "rrddLUruLLLLdddrrUUruLLulDDDuurrruulDrdLLulDDurrrrdddrrUruLLLdlUruLLLu" + "lDL") + +(defmaze + "#############" + "#### .## #" + "#@$ . #*##$ #" + "##$*.*..# #" + "# #**$ #" + "# ....* #$ #" + "## $$ *.## #" + "## $ # $$ #" + "## #### #" + "#############") + +(add-solution + "RDDldRRDuRRdLuUURDRRDulllddrURuLrrRdLruRurrdddddlllulULUdrdrdrrruuuuul" + "ldllDlluuuurrDDDrdLuLruuullddRdrrrurrdddddlllulUlUdrdrdrrruuuuulldllDl" + "lldRlulluuRRRuurrdDDrdLLLUUlllddrRUruLdddrUrruuuulllDDrRDrrrurrdddddll" + "lulULUdrdrdrrruuuuulldllDllllluuRRRDuluurrrdDDLdLLUUrDrrrdLrururrddddd" + "lllulUdrdrrruuuuulldlluuullDDRlldddRRUULullldddRRRUrurrdLrururrdddddll" + "lulULUdrdrdrrruuuuulldllDllldlluuurrruurrdDDrdLrururrdddddlllulUlLuUUl" + "DrddrrdrdrrruuuuulldllDLruuLDlluRllldddrRUUruLdddRURurrdLuuuulllDDrRdr" + "rrurrdddddlllulULUdrdrdrrruuuuulldllDllldlluuuRRDuuurrrdDlLDlUlldddrrU" + "UrurrDrdLrururrdddddlllulUdrdrrruuuuulldllLulLdddRRUULulDrrruuullDulDr" + "urrdddrrurrdLLLdLUUUddrrrrddlUruLLLdlUUdrrrrddddlUUUruLLLdlUrrrddddllu" + "RdrUUUruLLLLLLrrrrrruuulDDrdLLLLLrrrrdddlllUlllllddrUluRRRRldLullddrUl" + "uRRRllluuuuR") + +(defmaze + "#############" + "### @ #######" + "### $$#######" + "# ## $. ####" + "# $## *. ####" + "# . ..* ###" + "###**..* $ ##" + "## .$$# $ #" + "## $. # #" + "## # #####" + "#############") + +(add-solution + "rDDRDrrddLLDurruullDurrddlUlllDDRUdddrruLdlUUluuRDuRRdLullddllddrUluRd" + "RRdrruLUULullDRlDlddrUrURldlluRuurrDLulDrrrruLLruulDrdrdrdRdrruLuLuLLd" + "RuuuLDlluRdrrddlllUdrrruullDurrddlUlldlluRRRuulDrdLdllDlddrUrRUUlDulDr" + "ruUrRdrdRdrruLuLuLLdLLuRuulDrddrRuuuLrdddlluuRldRdlldddrruLUUruullDRdd" + "llluuRRDrdLrddlUruuluurDDlullddlddrURRUULuRdddlUdlluRdrruuullDDuurrdLD" + "rurrrdRdrruLuLLLLLuurrDullddrUdRRdRdrruLuLuLLuurDlddlluRllllluurDldRRR" + "RddlUruuuRluulldRurDDDDLddrUrrRdRdrruLuLLLLLdddrruLUluRdddlUUlllddrUlu" + "RdRRdrruLLruuRRdRdrruLuLLLUdrrrddlUruLLruL") + +(defmaze + "###########" + "### ######" + "# $######" + "# $ #####" + "# $## $@##" + "# $...*$###" + "# #** ###" + "### *.*.* #" + "####* .. #" + "#### $ * #" + "#### ###" + "###########") + +(add-solution + "LDDDuuLLDDRdRUlluuuuLLullddddrrdRDRUrrdLulllulluuuurrdrrddrrDulluullul" + "lddddrrdrrUdrdddllURUruUlDllulluuuurrdrrdDuullullddddrrdrrruruuLrddldd" + "rUlllDRddrrULrrruuLLLDurrrddllUluRluUrDlddlluRdrrddlUdllURuulluuRRDrrD" + "DLULuullddRDRddrrUrruuLLuuLLdDDlululluuuurrdrrDDrrddrrddlldlllUUruRRuu" + "lluullullddddrrdRdddrrruULuUddrddllluuuRUrrDDlUlldddrrrUrruuLDuLLdRddl" + "lluuuRllulluuuurrdrrdDDuuullullddddrrdrdddrrruuuuuuLrddddddllluuulullu" + "uuurrdrrDrrddddlLrrddllluUddrrULdlUrrruurrddLUluuuullDRurDDDuulluullul" + "lddddrruRRRurDDulllldlluRRlluuRDlddrruRRuulLuurDlllddddrrurruuLullDldd" + "RRRllluurDldRRluuurrdLulDDldR") + +(defmaze + "############" + "#### ######" + "#### $$ $ #" + "###@$ $ #" + "# $$## . ###" + "# ..*.*####" + "# $ #*...###" + "# # *. #####" + "# # * #####" + "## ######" + "############") + +(add-solution + "RRluurDRDDDLDRddLUruulLLddRRUruuuulldlDDrRdrUUrruuLLrrddllUdrruulDlddl" + "lluurRluurDRDDurrdLululldlddrrdrRUUruuLLrrddlUdddlluRdrUUruuLDlDDuurrd" + "LdllddddllluluuuRRuurRRlllddlldddrdrrruuuurrdLruuruulDllllddRRDrruUruL" + "dddlluRllllldddrdrrruUllUdrrddllluluuRuRRRDDllUdrruulLrrdrrULLddllulld" + "drdrrrUrULuurDruUruulDLDDuurrdLdllddddllluluurruuurRRllldddllddrdrrruu" + "uurrdLruuruulDllllddRRDrruUruLdddlluRdrUlllldllddrdrrrurUdldllluluurru" + "rrdDuurrdLruUruulDLDDlllddRlullddrdrrUdlluluuuRRRRRuurrdLDlllluurRRlll" + "ddlluRdrrrrruruulDlDurrdLdLLrruullllDuruurDldRRDrdLruruulDDuuLdlluurDl" + "dRRurDrrruLLLLdlluurDldRurDD") + +(defmaze + "##############" + "#### ### ##" + "# $ $ ## ##" + "#. $####$ ##" + "#.* $ $ ###" + "#*.#$*.$ #$$ #" + "#......* # @ #" + "## ########" + "##############") + +(add-solution + "lUULLddLLLLdlluuUruuRlddldddrrruruuLLDRdrrruuLDuLDlluRRdlddllluuuRRluu" + "rDldlluuRDrruLdlldRdddrrruulULulDrrdrruLLLuurDldRlulldRurrddrddllluUUl" + "uRddddrrruuluLrdrddllluuUluuRDDrruLruurrdLulDLddlluuRRddrdrruLLLuuRDld" + "RluulldRurrdddrddlUdlluRRlllUURDuuurrddLrDrruLLuulldDlddRdrrUdrUdllluR" + "RllluurDuuurrddLrrrdrruLLLLuulldDlddRdrruURRllddrUdllluRRllluurDuuurrd" + "DLruulldDlddRUUdddrruLdlUluurrrDurrdLullllddrrdrrULdlluluurrrrDulllldd" + "rdrruUruLdddrUdllluRRllluurDldRdrruuuuullDDDuuurrurrdLulDDDDuLruulllDD" + "DuurDrrrrrrdLrurrUruulDlDurrdLdLLLLLLLLulDrrrrrrrrruulDrdddrruLdlUULLL" + "LLLLLrrrrrrruurrdLulDrdLLLLLLLruLL") + +(defmaze + "###########" + "##### ####" + "####. . ##" + "###..**# ##" + "###* *. ##" + "# . ##$###" + "# $.$## #" + "##$$ $@$ #" + "## # #" + "###########") + +(add-solution + "RlLdllURRlUUlDulldRurrdddllURlURurUUlDDDlddrUdrruLUUdddlluuRlddrruLuur" + "DluuurDDldlluRdrddlUrdrruLLuUruulDDruRRULuurDrrddLLUdrruulLddrDDrrddlU" + "dlULLdlluRRRRlllUUlDulldRurrdddllUURlddrruLuurDluuuRDRRuurrddLLLLDlddd" + "rrurrUUddlldlluuururruurrddLdddlldlluuuruuRdldldddrrurruuuruullulDrrrd" + "dlLUdrdddlldlluuuruuRlddldddrrurruuulLullDDrUluRdrrrdddlldlluUddrruLUU" + "UrrrddddrruuLrdLLLLdlUUlUUrrrrdDuullllddrUluRRldddrrRdrruLLLLdlUUUluRd" + "dllluRdrUrdddlUdlUUluR") + +(defmaze + "###########" + "######## #" + "####### #" + "# ####$$ #" + "# $$ # . ##" + "# $ .*.. ##" + "# $ .# ###" + "# # ..$###" + "## *.*. ###" + "## *$$*####" + "### @####" + "###########") + +(add-solution + "llUULrddrrUUrUdldLdllUlUUluuRDRRuLrdDrDrddlUdlluRlluUluRRurRRurrUdlldl" + "DLdDLddrrruuLLrrddlUruLUluurDDDrddlUdlluRUUdddrruuLrddlluRuulDruuulDDr" + "dddllulUUluuRDluuurDlddrRRuuLDrddrdddlluluUluuRRurDllluRdlddrUUddddrdr" + "ruLruulDLrrddllUlUUluurrrDDuurDDDrruLdlUluulllddrddrdrrUdlluRUUdddrrUU" + "LrddllluluuluurrrrDDlDLddrrruuLLrrddllURuulDruuulDDrdrruLdlddrUdllluRR" + "uUlDuuulllddrURurDllluRluurDlddrrruuLDrdDrdddllulUUluuRRurDllluRdlddrU" + "UddddrdrruLruulDLrrddllUlUUluurrrrrurrdLLLLDDrrrUdllluurDldRdddlluluul" + "uurDluuurDlddrRRuuLDrddrdddlluluUluuRRurDllluRdlddrUUddddrdrruLruulDLr" + "rddllUlUUluurrrrrurrdLLrruuruulDlDDuurrdLulDrddLdddLLuRdrUUddllddrUUdd" + "llluRRuulDrddlluluRRRdLulluluurrrDDuulllddrdrRdrUllluURurDDullluRluurD" + "DldRddrRuuuuLrddddddlUluuuuRurDDDDuuulldRurDDullluuurDldRRdldddrdrruL") + +(defmaze + "##############" + "# ####.## #" + "# ## ..# $ #" + "# $ ##$.$## #" + "# $ #.... #" + "# $ $ #.*#####" + "# # $*.. $@#" + "# $$ # .$ ####" + "# # ######" + "##############") + +(add-solution + "LLLdLLULLuLuLuullddddddrrruUlUUddrddllluuuuRUldddddrrruuruLuLrddlUdrrr" + "rdrruLLUUrDluUUrDDldddrruLdlUUUrDlddrruLdlULLulldRRRRddlUruUrDuuuullDR" + "urDDulDDDLddrUUUUrrrrruuulDDrdLLLLuulldRurDlDDDlddrUUUURuulldRurDldddl" + "LulldRRRdrUUUUluRddddlllddlUdlluRRdrUllluuRRDRRRdrUUUUdddllllulluurDld" + "ddrRdrUluRRRdrUUUddlluLuLDDrddlluRdrUluRRRdrUUdlllldlluuRRurDldRRRdrUr" + "rdLulllllulluurDldRRurDldRRRRRllllluulluuurDDDldRRurDldRRRRlllluuluurD" + "DldRurDldRRR") + +(defmaze + "##############" + "## @ # ####" + "# $$$$#. *.###" + "# # *..$*$. #" + "# $# $**.... #" + "# .#$.$$ #" + "## ### # #" + "##############") + +(add-solution + "rDDDuRRDRRULdrRRULdlluuurrDDLruulldRddlUdlLuRlluurDldRddLUUdddlluRlluu" + "rDldRdrrULrruulDruuulDullDRRlllddrUluRurrdDrddLUUdrrrrurrdLLurrrrdLrdd" + "lUULulldRdRluurDrruLLdllLLLdldllUUluururrrDDlDRuuullldldddrdrrULrruulD" + "ruuulDulldRRlllddrUluRurrdDrddLUUdrRRRRddlUruRurrdLrddlULrruulDulDlLuR" + "RlldddrUUrrrddlULullLLLdldllUUluururrrDDlDRRRRRlllluuullldldddrdrrULrr" + "uulDruuulDulldRRlllddrUluRurrdDrddLdllUUluurRurrDDuulldRllldddrdrruUUd" + "RRRRllllddlluuluurrurrDDldRRRlluuulldRurDDldRRllddlluRdrUUUruulldRurDD" + "ldRdllluUluRRRurD") + +(defmaze + "###########" + "# . ###" + "#..*.**$###" + "# $#..# ###" + "# $ .* ###" + "#$#$$ $ #" + "#@# #" + "###########") + +(add-solution + "UURRlUURurrrrDDDlddlllURdrruuruuulllldlluRdddlUruuRRRDLdDLddrrruuLUluu" + "llddldRuuurrddrdrddlULrruruuuLLDldDRluurDDuuurrdLulDlLullDRRRRurrdddLd" + "dllUUUdddrruuruuullLLdlddRluururrrrdddlddrUdrruLLdllluUlluururrrrddDlL" + "LddrrURuuuulldDuulldRurrrdddddllluRluUrDlddrrruuuuulllldlddRluururrDLu" + "rrrdddddllluUUdddrrruuLLUlDrrruuulllDurrrdddllllluuRurrrrdddddllllUdrr" + "rruuuuulllldlluRRldddRddrrrruuuuullDLLulDrrrurrdddddlllluuRUdlddrrrruu" + "uuulldLLulldRurRRldddlddrUUUdddrrruulLUdrrddllUUdlUddrrUruLddrrruLLLLd" + "lUlulUdlU") + +;;; + +(setf *mazes* (nreverse *mazes*) + *solutions* (nreverse *solutions*)) diff --git a/examples/sokoban/lisp/3rd-party/sokoban.lisp b/examples/sokoban/lisp/3rd-party/sokoban.lisp new file mode 100644 index 0000000..ad80ab8 --- /dev/null +++ b/examples/sokoban/lisp/3rd-party/sokoban.lisp @@ -0,0 +1,130 @@ +(defpackage :cl-sokoban + (:nicknames :sokoban) + (:use :cl) + (:export + #:*mazes* + #:*move-hook* + #:*rules* + #:*solutions* + #:*undo-hook* + #:copy-maze + #:defmaze + #:maze + #:maze-dimensions + #:maze-player + #:maze-text + #:move + #:simple-ui + #:undo)) + +(in-package :cl-sokoban) + +(defvar *mazes* nil + "A list of two-dimensional character arrays, describing Sokoban puzzles.") + +(defvar *move-hook* nil) +(defvar *solutions* nil) + +(defvar *rules* + '(("@ " " @") + ("@." " &") + ("& " ".@") + ("&." ".&") + ("@$ " " @$") + ("@$." " @*") + ("&$ " ".@$") + ("&$." ".@*") + ("@* " " &$") + ("@*." " &*") + ("&* " ".&$") + ("&*." ".&*")) + "A list of textual transformation rules that the cl-sokoban mover steps +through. A rule has the format (\"from\" \" to \"); when \"from\" matches +the maze, \" to \" replaces it in the maze.") + +(defstruct (maze :named (:type vector) (:copier nil)) + player + dimensions + text) +(defun copy-maze (maze) + (make-maze :player (maze-player maze) + :dimensions (maze-dimensions maze) + :text (mapcar #'copy-seq (maze-text maze)))) + +(defun simple-ui () + (do ((input "" (read-line))) + ((search "q" input)) + (cond ((search "n" input) (move :north (first *mazes*))) + ((search "e" input) (move :east (first *mazes*))) + ((search "w" input) (move :west (first *mazes*))) + ((search "s" input) (move :south (first *mazes*)))) + (format t "~{~&~A~%~}" (maze-text (first *mazes*))))) + +(defun find-player (rows) + (loop :for y :from 0 + :for row :in rows + :for x? = (or (position #\@ row) + (position #\& row)) + :when x? return (cons x? y) + :finally (error "Maze lacks a player (@): ~S" rows))) + +(defun move (direction maze) + (loop :for (from to) :in *rules* + :when (string= from (lookahead (length from) direction maze)) + :do (return (setahead to direction maze)))) + +(defun move-point (location direction) + (case direction + (:east (cons (1+ (car location)) (cdr location))) + (:west (cons (1- (car location)) (cdr location))) + (:north (cons (car location) (1- (cdr location)))) + (:south (cons (car location) (1+ (cdr location)))))) + +(defun off-maze-p (location maze) + (destructuring-bind (x . y) (maze-dimensions maze) + (or (>= (car location) x) + (>= (cdr location) y) + (< (car location) 0) + (< (cdr location) 0)))) + +(defun lookahead (distance direction maze) + (do ((location (maze-player maze) (move-point location direction)) + (index 0 (1+ index)) + (chars nil (cons (elt (elt (maze-text maze) (cdr location)) + (car location)) + chars))) + ((or (= index distance) + (off-maze-p location maze)) + (coerce (reverse chars) 'string)))) + +(defun undo (maze steps) + (dolist (step steps) + (let* ((location (first step)) + (char (second step)) + (row (elt (maze-text maze) (cdr location)))) + (setf (elt row (car location)) char))) + (setf (maze-player maze) (find-player (maze-text maze)))) + +(defun setahead (string direction maze) + (let (undo-steps) + (loop :for char :across string + :for location = (maze-player maze) + :then (prog1 + (move-point location direction) + (when *move-hook* + (funcall *move-hook* char location direction))) + :do (let ((row (elt (maze-text maze) (cdr location)))) + (when *undo-hook* + (push (list location (elt row (car location))) + undo-steps)) + (setf (elt row (car location)) char))) + (when *undo-hook* + (funcall *undo-hook* undo-steps))) + (setf (maze-player maze) (find-player (maze-text maze)))) + +(defun defmaze (&rest rows) + (push (make-maze :text rows + :dimensions (cons (length (first rows)) + (length rows)) + :player (find-player rows)) + *mazes*)) diff --git a/examples/sokoban/lisp/package.lisp b/examples/sokoban/lisp/package.lisp new file mode 100644 index 0000000..f413c86 --- /dev/null +++ b/examples/sokoban/lisp/package.lisp @@ -0,0 +1,5 @@ +(defpackage :qsoko + (:use :cl :qml) + (:export + #:change-level + #:start)) diff --git a/examples/sokoban/lisp/qml-reload/on-reloaded.lisp b/examples/sokoban/lisp/qml-reload/on-reloaded.lisp new file mode 100644 index 0000000..236a4d7 --- /dev/null +++ b/examples/sokoban/lisp/qml-reload/on-reloaded.lisp @@ -0,0 +1,8 @@ +;;; this file will be loaded every time QML has been reloaded + +(in-package :qsoko) + +(progn + (let ((*no-delete* t)) + (set-maze)) + (q> |to| ui:*level* (1- (length *my-mazes*)))) diff --git a/examples/sokoban/lisp/sokoban.lisp b/examples/sokoban/lisp/sokoban.lisp new file mode 100644 index 0000000..0f7e554 --- /dev/null +++ b/examples/sokoban/lisp/sokoban.lisp @@ -0,0 +1,268 @@ +;;; +;;; QML UI for CL-Sokoban, see http://www.cliki.net/CL-Sokoban +;;; + +(in-package :qsoko) + +(defvar *item-types* + '((#\# . :wall) + (#\$ . :object) + (#\* . :object2) + (#\. . :goal) + (#\@ . :player) + (#\& . :player2))) + +(defvar *items* nil) +(defvar *item-size* nil) +(defvar *maze* nil) +(defvar *my-mazes* (mapcar 'sokoban:copy-maze sokoban:*mazes*)) +(defvar *solving* nil) +(defvar *undo-stack* nil) +(defvar *level-changed* nil) + +(defun level () + (floor (q< |value| ui:*level*))) + +(defun set-level (index) + (q> |value| ui:*level* index)) + +(defun assoc* (item alist) + (cdr (assoc item alist))) + +(defun char-type (char) + (cdr (assoc char *item-types*))) + +(defun type-char (type) + (car (find type *item-types* :key 'cdr))) + +(defun set-maze () + (setf *maze* (nth (level) *my-mazes*)) + (update-translate-xy) + (create-items) + (place-all-items) + (setf *undo-stack* nil)) + +(defun reset-maze () + (setf *maze* (setf (nth (level) *my-mazes*) + (sokoban:copy-maze (nth (level) sokoban:*mazes*)))) + (update-placed-items t) + (setf *undo-stack* nil)) + +(defvar *translate-x* 0) +(defvar *translate-y* 0) + +(defun find-file (file) + (x:if-it (probe-file file) + (format nil "file://~A" x:it) + (x:cc "qrc:/" file))) + +(defun update-translate-xy () + "Set x and y translation for maze centering." + (let ((dim (sokoban:maze-dimensions *maze*)) + (img-px 32) + (board-size 16)) + (setf *translate-x* (floor (/ (* img-px (- board-size (car dim))) 2)) + *translate-y* (floor (/ (* img-px (- board-size (cdr dim))) 2))))) + +(defun create-item (type) + (let* ((name (string-downcase type)) + (item (qjs |makeItem| ui:*dynamic* name))) + (q> |source| item + (find-file (format nil "qml/img/~A.png" name))) + (q> |objectName| item name) + (unless *item-size* + (setf *item-size* (q< |sourceSize| item))) + item)) + +(defun create-items () + (clear-items) + (flet ((add (types) + (dolist (type (x:ensure-list types)) + (let ((item (create-item type))) + (push item (cdr (assoc type *items*))) + ;; add to QObject hirarchy, for 'objectName' to be findable + (qset item |parent| + (find-quick-item ui:*board*)))))) + (dolist (row (sokoban:maze-text *maze*)) + (x:do-string (char row) + (unless (char= #\Space char) + (let ((type (char-type char))) + (cond ((find type '(:player :player2)) + (add '(:player :player2))) + ((find type '(:object :object2)) + (add '(:object :object2 :goal))) + ((eql :wall type) + (add :wall))))))))) + +(defvar *no-delete* nil) + +(defun clear-items () + (unless *no-delete* + (dolist (items *items*) + (dolist (item (rest items)) + (q! |destroy| item)))) + (setf *items* (mapcar (lambda (x) (list (cdr x))) *item-types*))) + +(defvar *running-animations* 0) +(defvar *function-queue* nil) + +(defun animation-change (running) ; called from QML + (incf *running-animations* (if running 1 -1)) + (x:while (and (zerop *running-animations*) + *function-queue*) + (funcall (pop *function-queue*)))) + +(defun run-or-enqueue (function) + (if (zerop *running-animations*) + (funcall function) + (setf *function-queue* (nconc *function-queue* (list function))))) + +(defmacro queued (&rest functions) + "Run passed functions in order, waiting for currently running (or newly + triggered) animations to finish first." + `(progn + ,@(mapcar (lambda (fun) `(run-or-enqueue (lambda () ,fun))) + functions))) + +(defun change-level (direction/index) + "Changes *LEVEL* in given direction or to index." + (let ((level (min (1- (length *my-mazes*)) + (max 0 (if (numberp direction/index) + direction/index + (+ (if (eql :next direction/index) 1 -1) + (level))))))) + (when (/= level (level)) + (queued (q> |running| ui:*zoom-board-out* t) + (set-level level) ; will call SET-MAZE from QML + (q> |running| ui:*zoom-board-in* t)))) + (setf *level-changed* t) + (level)) + +(defun solve () + (setf *level-changed* nil) + (let ((*solving* t)) + (reset-maze) + (x:do-string (ch (nth (level) sokoban:*solutions*)) + (when *level-changed* + (setf *level-changed nil) + (return-from solve)) + (sokoban:move (case (char-downcase ch) + (#\u :north) + (#\d :south) + (#\l :west) + (#\r :east)) + *maze*) + (x:while (plusp *running-animations*) + (qsleep 0.05))))) + +(defun set-x (item x &optional animate) + (let ((x* (+ x *translate-x*))) + (if animate + (q> |x| item x*) + (qset item |x| x*)))) + +(defun set-y (item y &optional animate) + (let ((y* (+ y *translate-y*))) + (if animate + (q> |y| item y*) + (qset item |y| y*)))) + +(defun child-at (x y) + (q! |childAt| ui:*board* + (+ x *translate-x*) + (+ y *translate-y*))) + +(defun place-items (type &optional reset) + (let ((char (type-char type)) + (items (assoc* type *items*)) + (y 0)) + (unless (eql :wall type) + (dolist (item items) + (q> |visible| item nil))) + (dolist (row (sokoban:maze-text *maze*)) + (let ((x 0)) + (x:do-string (curr-char row) + (when (char= char curr-char) + (let ((item (first items))) + (set-x item x) + (set-y item y) + (q> |visible| item t)) + (setf items (rest items))) + (incf x (first *item-size*)))) + (incf y (second *item-size*))))) + +(defun place-all-items () + (dolist (type '(:wall :goal :object2 :player2 :player :object)) + (place-items type))) + +(defun update-placed-items (&optional reset) + (dolist (type '(:goal :object2 :player2 :player :object)) + (place-items type reset))) + +(let (ex ex-ex) + (defun move-item (char pos direction) ; see sokoban:*move-hook* + (let* ((type (char-type char)) + (pos-x (car pos)) + (pos-y (cdr pos)) + (w (first *item-size*)) + (h (second *item-size*)) + (x (* w pos-x)) + (y (* h pos-y)) + (dx (case direction (:east w) (:west (- w)) (t 0))) + (dy (case direction (:south h) (:north (- h)) (t 0))) + (item (child-at (+ x (/ w 2)) (+ y (/ h 2))))) + (unless (qnull item) + (if (zerop dy) + (set-x item (+ x dx) 'animate) + (set-y item (+ y dy) 'animate)) + (dolist (tp (list type ex ex-ex)) + (when (find tp '(:player2 :object2 :goal)) + (queued (update-placed-items)) + (return))) + (shiftf ex-ex ex type) + (when (eql :player type) + (qlater (lambda () (when (game-finished) + (final-animation))))))))) + +(defun add-undo-step (step) + (push step *undo-stack*)) + +(defun undo () + (when *undo-stack* + (sokoban:undo *maze* (pop *undo-stack*)) + (update-placed-items))) + +(defun game-finished () + ;; finished: no more :object, only :object2 + (let ((ch (type-char :object))) + (dolist (str (sokoban:maze-text *maze*)) + (when (find ch str) + (return-from game-finished)))) + t) + +(defun final-animation () + (queued (q> |running| ui:*rotate-player* t) + (q>* |running| ui:*wiggle-box* t))) + +(defun button-pressed () ; called from QML + (let ((button (intern (string-upcase (q< |objectName| *caller*)) + :keyword))) + (case button + (:up (sokoban:move :north *maze*)) + (:down (sokoban:move :south *maze*)) + (:left (sokoban:move :west *maze*)) + (:right (sokoban:move :east *maze*)) + (:previous (change-level :previous)) + (:next (change-level :next)) + (:undo (undo)) + (:restart (reset-maze)) + (:solve (qlater 'solve)))) ; QLATER: prevent timer problem + (values)) ; no return value to QML + +(defun start () + (setf sokoban:*move-hook* 'move-item + sokoban:*undo-hook* 'add-undo-step) + (q> |to| ui:*level* (1- (length *my-mazes*))) + (set-maze)) + +(qlater 'start) diff --git a/examples/sokoban/lisp/ui-vars.lisp b/examples/sokoban/lisp/ui-vars.lisp new file mode 100644 index 0000000..4c9d248 --- /dev/null +++ b/examples/sokoban/lisp/ui-vars.lisp @@ -0,0 +1,42 @@ +(defpackage ui + (:use :cl :qml) + (:export + #:*board* + #:*buttons1* + #:*buttons2* + #:*down* + #:*dynamic* + #:*left* + #:*level* + #:*next* + #:*previous* + #:*restart* + #:*right* + #:*rotate-player* + #:*solve* + #:*undo* + #:*up* + #:*wiggle-box* + #:*zoom-board-in* + #:*zoom-board-out*)) + +(in-package :ui) + +(defparameter *board* "board") +(defparameter *buttons1* "buttons1") +(defparameter *buttons2* "buttons2") +(defparameter *down* "down") +(defparameter *dynamic* "dynamic") +(defparameter *left* "left") +(defparameter *level* "level") +(defparameter *next* "next") +(defparameter *previous* "previous") +(defparameter *restart* "restart") +(defparameter *right* "right") +(defparameter *rotate-player* "rotate_player") +(defparameter *solve* "solve") +(defparameter *undo* "undo") +(defparameter *up* "up") +(defparameter *wiggle-box* "wiggle_box") +(defparameter *zoom-board-in* "zoom_board_in") +(defparameter *zoom-board-out* "zoom_board_out") diff --git a/examples/sokoban/qml/ext/ArrowButton.qml b/examples/sokoban/qml/ext/ArrowButton.qml new file mode 100644 index 0000000..6e0175c --- /dev/null +++ b/examples/sokoban/qml/ext/ArrowButton.qml @@ -0,0 +1,15 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Button { + width: main.small ? 37 : 50 + height: width + flat: true + focusPolicy: Qt.NoFocus + font.family: fontAwesome.name + font.pixelSize: 1.2 * width + opacity: 0.2 + scale: 1.2 + + onPressed: Lisp.call(this, "qsoko:button-pressed") +} diff --git a/examples/sokoban/qml/ext/Button.qml b/examples/sokoban/qml/ext/Button.qml new file mode 100644 index 0000000..75c5fc6 --- /dev/null +++ b/examples/sokoban/qml/ext/Button.qml @@ -0,0 +1,12 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Button { + width: main.small ? 32 : 50 + height: width + font.family: fontAwesome.name + font.pixelSize: width - 6 + opacity: 0.8 + + onPressed: Lisp.call(this, "qsoko:button-pressed") +} diff --git a/examples/sokoban/qml/ext/Dynamic.qml b/examples/sokoban/qml/ext/Dynamic.qml new file mode 100644 index 0000000..ed3ff27 --- /dev/null +++ b/examples/sokoban/qml/ext/Dynamic.qml @@ -0,0 +1,21 @@ +import QtQuick 2.15 + +Item { + objectName: "dynamic" + + property Component box: Qt.createComponent("dynamic/Box.qml") + property Component box2: Qt.createComponent("dynamic/Box2.qml") + property Component player: Qt.createComponent("dynamic/Player.qml") + property Component fixed: Qt.createComponent("dynamic/Fixed.qml") + + function makeItem(name) { + switch (name) { + case "object": return box.createObject() + case "object2": return box2.createObject() + case "player": + case "player2": return player.createObject() + case "wall": + case "goal": return fixed.createObject() + } + } +} diff --git a/examples/sokoban/qml/ext/NumberAnimation.qml b/examples/sokoban/qml/ext/NumberAnimation.qml new file mode 100644 index 0000000..f8bb050 --- /dev/null +++ b/examples/sokoban/qml/ext/NumberAnimation.qml @@ -0,0 +1,6 @@ +import QtQuick 2.15 + +NumberAnimation { + onRunningChanged: Lisp.call("qsoko:animation-change", running) +} + diff --git a/examples/sokoban/qml/ext/RotationAnimation.qml b/examples/sokoban/qml/ext/RotationAnimation.qml new file mode 100644 index 0000000..ca5d9cb --- /dev/null +++ b/examples/sokoban/qml/ext/RotationAnimation.qml @@ -0,0 +1,6 @@ +import QtQuick 2.15 + +RotationAnimation { + onRunningChanged: Lisp.call("qsoko:animation-change", running) +} + diff --git a/examples/sokoban/qml/ext/ScaleAnimator.qml b/examples/sokoban/qml/ext/ScaleAnimator.qml new file mode 100644 index 0000000..ef38709 --- /dev/null +++ b/examples/sokoban/qml/ext/ScaleAnimator.qml @@ -0,0 +1,5 @@ +import QtQuick 2.15 + +ScaleAnimator { + onRunningChanged: Lisp.call("qsoko:animation-change", running) +} diff --git a/examples/sokoban/qml/ext/SequentialAnimation.qml b/examples/sokoban/qml/ext/SequentialAnimation.qml new file mode 100644 index 0000000..21c3ef3 --- /dev/null +++ b/examples/sokoban/qml/ext/SequentialAnimation.qml @@ -0,0 +1,6 @@ +import QtQuick 2.15 + +SequentialAnimation { + onRunningChanged: Lisp.call("qsoko:animation-change", running) +} + diff --git a/examples/sokoban/qml/ext/dynamic/Box.qml b/examples/sokoban/qml/ext/dynamic/Box.qml new file mode 100644 index 0000000..df5e5b3 --- /dev/null +++ b/examples/sokoban/qml/ext/dynamic/Box.qml @@ -0,0 +1,18 @@ +import QtQuick 2.15 +import "../" as Ext + +Image { + Behavior on x { + Ext.NumberAnimation { + duration: 150 + easing.type: Easing.InQuart + } + } + + Behavior on y { + Ext.NumberAnimation { + duration: 150 + easing.type: Easing.InQuart + } + } +} diff --git a/examples/sokoban/qml/ext/dynamic/Box2.qml b/examples/sokoban/qml/ext/dynamic/Box2.qml new file mode 100644 index 0000000..a16ce8b --- /dev/null +++ b/examples/sokoban/qml/ext/dynamic/Box2.qml @@ -0,0 +1,48 @@ +import QtQuick 2.15 +import "../" as Ext + +Image { + id: box2 + + Behavior on x { + Ext.NumberAnimation { + duration: 150 + easing.type: Easing.InQuart + } + } + + Behavior on y { + Ext.NumberAnimation { + duration: 150 + easing.type: Easing.InQuart + } + } + + // final animation + + Ext.SequentialAnimation { + objectName: "wiggle_box" + loops: 3 + + RotationAnimation { + target: box2 + property: "rotation" + from: 0; to: 30 + duration: 150 + } + + RotationAnimation { + target: box2 + property: "rotation" + from: 30; to: -30 + duration: 300 + } + + RotationAnimation { + target: box2 + property: "rotation" + from: -30; to: 0 + duration: 150 + } + } +} diff --git a/examples/sokoban/qml/ext/dynamic/Fixed.qml b/examples/sokoban/qml/ext/dynamic/Fixed.qml new file mode 100644 index 0000000..2eaa807 --- /dev/null +++ b/examples/sokoban/qml/ext/dynamic/Fixed.qml @@ -0,0 +1,4 @@ +import QtQuick 2.15 + +Image { +} diff --git a/examples/sokoban/qml/ext/dynamic/Player.qml b/examples/sokoban/qml/ext/dynamic/Player.qml new file mode 100644 index 0000000..f6cbfb3 --- /dev/null +++ b/examples/sokoban/qml/ext/dynamic/Player.qml @@ -0,0 +1,30 @@ +import QtQuick 2.15 +import "../" as Ext + +Image { + id: player + + Behavior on x { + Ext.NumberAnimation { + duration: 120 + easing.type: Easing.InOutSine + } + } + + Behavior on y { + Ext.NumberAnimation { + duration: 120 + easing.type: Easing.InOutSine + } + } + + // final animation + + Ext.RotationAnimation { + objectName: "rotate_player" + target: player + property: "rotation" + from: 0; to: 360 + duration: 600 + } +} diff --git a/examples/sokoban/qml/fonts/fontawesome-webfont.ttf b/examples/sokoban/qml/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/examples/sokoban/qml/fonts/fontawesome-webfont.ttf differ diff --git a/examples/sokoban/qml/img/goal.png b/examples/sokoban/qml/img/goal.png new file mode 100644 index 0000000..37b0141 Binary files /dev/null and b/examples/sokoban/qml/img/goal.png differ diff --git a/examples/sokoban/qml/img/object.png b/examples/sokoban/qml/img/object.png new file mode 100644 index 0000000..43e879d Binary files /dev/null and b/examples/sokoban/qml/img/object.png differ diff --git a/examples/sokoban/qml/img/object2.png b/examples/sokoban/qml/img/object2.png new file mode 100644 index 0000000..d46b2b7 Binary files /dev/null and b/examples/sokoban/qml/img/object2.png differ diff --git a/examples/sokoban/qml/img/player.png b/examples/sokoban/qml/img/player.png new file mode 100644 index 0000000..7a6751a Binary files /dev/null and b/examples/sokoban/qml/img/player.png differ diff --git a/examples/sokoban/qml/img/player2.png b/examples/sokoban/qml/img/player2.png new file mode 100644 index 0000000..7a6751a Binary files /dev/null and b/examples/sokoban/qml/img/player2.png differ diff --git a/examples/sokoban/qml/img/wall.png b/examples/sokoban/qml/img/wall.png new file mode 100644 index 0000000..f61ff20 Binary files /dev/null and b/examples/sokoban/qml/img/wall.png differ diff --git a/examples/sokoban/qml/main.qml b/examples/sokoban/qml/main.qml new file mode 100644 index 0000000..12fad1f --- /dev/null +++ b/examples/sokoban/qml/main.qml @@ -0,0 +1,155 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Window 2.15 +import "ext/" as Ext + +Rectangle { + id: main + width: Screen.desktopAvailableWidth + height: Screen.desktopAvailableHeight + + property bool small: (Math.max(width, height) < 1000) + + function isLandscape() { return (Screen.primaryOrientation === Qt.LandscapeOrientation) } + + Ext.Dynamic {} + + Row { + anchors.centerIn: parent + // adapt 'level' and 'board' scale to screen size + scale: isLandscape() + ? ((Screen.desktopAvailableHeight - 10) / board.height) + : ((Screen.desktopAvailableWidth - 10) / (board.width + 2 * level.width)) + + Slider { + id: level + objectName: "level" + height: board.height + orientation: Qt.Vertical + stepSize: 1.0 + + onValueChanged: Lisp.call("qsoko:set-maze") + } + + Rectangle { + id: board + objectName: "board" + width: 512; height: 512 + color: "lightsteelblue" + } + + // dummy to have it exactly centered + Item { + width: level.width + height: level.height + } + } + + Row { + id: buttons1 + objectName: "buttons1" + spacing: main.small ? 10 : 15 + padding: 10 + anchors.bottom: parent.bottom + + Ext.Button { + objectName: "previous" + text: "\uf100" + } + Ext.Button { + objectName: "next" + text: "\uf101" + } + } + + Row { + id: buttons2 + objectName: "buttons2" + spacing: main.small ? 10 : 15 + padding: 10 + anchors.right: parent.right + anchors.bottom: parent.bottom + + Ext.Button { + objectName: "undo" + text: "\uf112" + } + Ext.Button { + objectName: "restart" + text: "\uf0e2" + } + Ext.Button { + objectName: "solve" + text: "\uf17b" + } + } + + // container for arrow buttons + Item { + id: arrows + y: buttons1.y - height - (main.small ? 25 : 50) + width: up.width * 3 + height: up.height * 3 + anchors.margins: 10 + anchors.horizontalCenter: buttons2.horizontalCenter + + Ext.ArrowButton { + id: up + objectName: "up" + text: "\uf139" + anchors.horizontalCenter: parent.horizontalCenter + } + + Ext.ArrowButton { + objectName: "left" + text: "\uf137" + anchors.verticalCenter: parent.verticalCenter + } + + Ext.ArrowButton { + objectName: "right" + text: "\uf138" + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + } + + Ext.ArrowButton { + objectName: "down" + text: "\uf13a" + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + } + } + + // level change animations + + Ext.ScaleAnimator { + objectName: "zoom_board_out" + target: board + from: 1.0 + to: 0.0 + duration: 250 + } + + Ext.ScaleAnimator { + objectName: "zoom_board_in" + target: board + from: 0.0 + to: 1.0 + duration: 250 + } + + // etc + + Keys.onPressed: { + if(event.key === Qt.Key_Back) { + event.accepted = true + Lisp.call("qml:qquit") + } + } + + FontLoader { + id: fontAwesome + source: "fonts/fontawesome-webfont.ttf" + } +} diff --git a/examples/sokoban/readme.md b/examples/sokoban/readme.md new file mode 100644 index 0000000..9830bb7 --- /dev/null +++ b/examples/sokoban/readme.md @@ -0,0 +1,26 @@ + +Info +---- + +This shows how to dynamically create/destroy QML items. + +For the game logic please see [cl-sokoban](lisp/3rd-party/); so, this is just +an UI layer on top of that game. + + +Run +--- +``` +lqml run.lisp +``` +Optionally pass `-slime` to start a Swank server, and connect from Emacs with +`M-x slime-connect`. + +During development you can pass `-auto`, which will releoad all QML files after +you made a change to any of them and saved it. For re-initialization after +reloading, file `lisp/qml-reload/on-reloaded` will be loaded. + +Closing the window quits the app. If you try to kill it with `ctrl-c`, you need +an additional `ctrl-d` to exit from ECL. To quit from Slime, do `(qq)` which is +short for `(qquit)`. + diff --git a/readme.md b/readme.md index b01fc17..20187b0 100644 --- a/readme.md +++ b/readme.md @@ -48,7 +48,6 @@ port still lacks significant parts of mobile (as of Qt6.2). TODO ---- -* add sokoban example * add CL REPL example * add Windows platform * port to CMake