From b897d605399696f27bb1e323ee0f047b4544cb09 Mon Sep 17 00:00:00 2001 From: "pls.153" Date: Wed, 30 Mar 2022 00:53:54 +0200 Subject: [PATCH] add example 'sokoban' --- examples/sokoban/.gitignore | 2 + examples/sokoban/app.asd | 8 + examples/sokoban/lisp/3rd-party/CONTRIBUTORS | 6 + examples/sokoban/lisp/3rd-party/COPYING | 3 + examples/sokoban/lisp/3rd-party/README.txt | 3 + examples/sokoban/lisp/3rd-party/levels.lisp | 816 ++++ .../sokoban/lisp/3rd-party/my-levels.lisp | 3725 +++++++++++++++++ examples/sokoban/lisp/3rd-party/sokoban.lisp | 130 + examples/sokoban/lisp/package.lisp | 5 + .../sokoban/lisp/qml-reload/on-reloaded.lisp | 8 + examples/sokoban/lisp/sokoban.lisp | 268 ++ examples/sokoban/lisp/ui-vars.lisp | 42 + examples/sokoban/qml/ext/ArrowButton.qml | 15 + examples/sokoban/qml/ext/Button.qml | 12 + examples/sokoban/qml/ext/Dynamic.qml | 21 + examples/sokoban/qml/ext/NumberAnimation.qml | 6 + .../sokoban/qml/ext/RotationAnimation.qml | 6 + examples/sokoban/qml/ext/ScaleAnimator.qml | 5 + .../sokoban/qml/ext/SequentialAnimation.qml | 6 + examples/sokoban/qml/ext/dynamic/Box.qml | 18 + examples/sokoban/qml/ext/dynamic/Box2.qml | 48 + examples/sokoban/qml/ext/dynamic/Fixed.qml | 4 + examples/sokoban/qml/ext/dynamic/Player.qml | 30 + .../sokoban/qml/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes examples/sokoban/qml/img/goal.png | Bin 0 -> 284 bytes examples/sokoban/qml/img/object.png | Bin 0 -> 469 bytes examples/sokoban/qml/img/object2.png | Bin 0 -> 478 bytes examples/sokoban/qml/img/player.png | Bin 0 -> 841 bytes examples/sokoban/qml/img/player2.png | Bin 0 -> 841 bytes examples/sokoban/qml/img/wall.png | Bin 0 -> 165 bytes examples/sokoban/qml/main.qml | 155 + examples/sokoban/readme.md | 26 + readme.md | 1 - 33 files changed, 5368 insertions(+), 1 deletion(-) create mode 100644 examples/sokoban/.gitignore create mode 100644 examples/sokoban/app.asd create mode 100644 examples/sokoban/lisp/3rd-party/CONTRIBUTORS create mode 100644 examples/sokoban/lisp/3rd-party/COPYING create mode 100644 examples/sokoban/lisp/3rd-party/README.txt create mode 100644 examples/sokoban/lisp/3rd-party/levels.lisp create mode 100644 examples/sokoban/lisp/3rd-party/my-levels.lisp create mode 100644 examples/sokoban/lisp/3rd-party/sokoban.lisp create mode 100644 examples/sokoban/lisp/package.lisp create mode 100644 examples/sokoban/lisp/qml-reload/on-reloaded.lisp create mode 100644 examples/sokoban/lisp/sokoban.lisp create mode 100644 examples/sokoban/lisp/ui-vars.lisp create mode 100644 examples/sokoban/qml/ext/ArrowButton.qml create mode 100644 examples/sokoban/qml/ext/Button.qml create mode 100644 examples/sokoban/qml/ext/Dynamic.qml create mode 100644 examples/sokoban/qml/ext/NumberAnimation.qml create mode 100644 examples/sokoban/qml/ext/RotationAnimation.qml create mode 100644 examples/sokoban/qml/ext/ScaleAnimator.qml create mode 100644 examples/sokoban/qml/ext/SequentialAnimation.qml create mode 100644 examples/sokoban/qml/ext/dynamic/Box.qml create mode 100644 examples/sokoban/qml/ext/dynamic/Box2.qml create mode 100644 examples/sokoban/qml/ext/dynamic/Fixed.qml create mode 100644 examples/sokoban/qml/ext/dynamic/Player.qml create mode 100644 examples/sokoban/qml/fonts/fontawesome-webfont.ttf create mode 100644 examples/sokoban/qml/img/goal.png create mode 100644 examples/sokoban/qml/img/object.png create mode 100644 examples/sokoban/qml/img/object2.png create mode 100644 examples/sokoban/qml/img/player.png create mode 100644 examples/sokoban/qml/img/player2.png create mode 100644 examples/sokoban/qml/img/wall.png create mode 100644 examples/sokoban/qml/main.qml create mode 100644 examples/sokoban/readme.md 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 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 literal 0 HcmV?d00001 diff --git a/examples/sokoban/qml/img/goal.png b/examples/sokoban/qml/img/goal.png new file mode 100644 index 0000000000000000000000000000000000000000..37b01414dc1e2fc7527c66c416f31a30c4e9c6f5 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YJ6ay??U;1@|N82WEa#q2nvnQo{lT*y z;_Nl{1)uGA-PkVfFCh_U@aK6+K>CtQk%Y~2L@K*v4pcmTU7xi|`6lCuLOU|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YJ6$6HSo~wm_n?|+d^Nq_6 zrK+^;T(v5C4ujyucT=V}Y(Bm{IA_Q7W$#>%^0jonVzTQ6Bs!~Vm|dv^N~<~Xnj+v zAcIRqNX8<`=>)S(=Z4nhO@~=l?Gl|D!8C75)2h6awOiL11|JmHchh`%!s~!EpRaou z)56<={wb;lTyu3fd(W6pFFrSegL5xiP2B5bm3{BmXC2L$TU|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YJ6Td z&eO#)B;xSd@QrH^8Hm(uypzW1r4p3hB(g!@D?=Gn%jdj5S6F8IUgK$o(xQ_kh2D&Hw(pH{?PqM07?%w*NNfns{zY=>(}yn`NRBdg2O@8 z_ZlZ#?1Z+RY-@1#R+#wUfS|CG+yjptqHJ%MSVtX%e{ dE5|=u`{*j&o$%*sF9QPugQu&X%Q~loCIBu6#nk`+ literal 0 HcmV?d00001 diff --git a/examples/sokoban/qml/img/player.png b/examples/sokoban/qml/img/player.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6751abc311ba6b7f90b8e8bf0a501fb9452690 GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YJ6$uzIy)o z@5gKRzgPMl#=9t}?(;=GvF?3lr%#`*sCZxH^5tBI2BYiQTO5kN!+bkjLauy{i`{A` z{_D&EmWsslsUjj`%be#*&S;qa-DUSP@1zvd2j}Xy+O@~HJ-oFwlgEGl-qwGwCKt$h zEb`&zzN|6*9m}n==a(}!Oq7sh6x(z{c-ywOqFXX~rt8@!?V7vy=*8s+JezaZGcagP zEqwCXo`GR^ud^10^Y8ChnyS<_0lGwVs!Jya@b@V(rU8tI|R9b+APefJyJjvsCZcy&$} z-M3pRGA*_AWk_ghwv$JKi;8`LeuDd+Z!)!;Z?Y^E>GI0a7YdRn@XDNi&VYxZVOi!r z72nHWR0N+kzTS0?^}VR?#0+MrulD|Xgj#*!M5Jxk84xz zY!#f*G;=0DL&Mp#(rac^1is|mt8;q66sPN@0!|UU7T;Ng3bscxSky0Ui?`p*&``Wq zYh9h)+@|%(=XXxGwW#}(zyH*thivz6Mz<_V+nuGjf!|_bzD!?Y&}`dS=|9Ka-rFg% zIhJ`NtkgoU$!@y?x(!d<*(73c%c5& y3i%(egap~XZ{k*ZIJ@b$zE5KR;TyZ2>MPVGK5*PV)s=yPfx*+&&t;ucLK6V!M1pSs literal 0 HcmV?d00001 diff --git a/examples/sokoban/qml/img/player2.png b/examples/sokoban/qml/img/player2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6751abc311ba6b7f90b8e8bf0a501fb9452690 GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YJ6$uzIy)o z@5gKRzgPMl#=9t}?(;=GvF?3lr%#`*sCZxH^5tBI2BYiQTO5kN!+bkjLauy{i`{A` z{_D&EmWsslsUjj`%be#*&S;qa-DUSP@1zvd2j}Xy+O@~HJ-oFwlgEGl-qwGwCKt$h zEb`&zzN|6*9m}n==a(}!Oq7sh6x(z{c-ywOqFXX~rt8@!?V7vy=*8s+JezaZGcagP zEqwCXo`GR^ud^10^Y8ChnyS<_0lGwVs!Jya@b@V(rU8tI|R9b+APefJyJjvsCZcy&$} z-M3pRGA*_AWk_ghwv$JKi;8`LeuDd+Z!)!;Z?Y^E>GI0a7YdRn@XDNi&VYxZVOi!r z72nHWR0N+kzTS0?^}VR?#0+MrulD|Xgj#*!M5Jxk84xz zY!#f*G;=0DL&Mp#(rac^1is|mt8;q66sPN@0!|UU7T;Ng3bscxSky0Ui?`p*&``Wq zYh9h)+@|%(=XXxGwW#}(zyH*thivz6Mz<_V+nuGjf!|_bzD!?Y&}`dS=|9Ka-rFg% zIhJ`NtkgoU$!@y?x(!d<*(73c%c5& y3i%(egap~XZ{k*ZIJ@b$zE5KR;TyZ2>MPVGK5*PV)s=yPfx*+&&t;ucLK6V!M1pSs literal 0 HcmV?d00001 diff --git a/examples/sokoban/qml/img/wall.png b/examples/sokoban/qml/img/wall.png new file mode 100644 index 0000000000000000000000000000000000000000..f61ff200032d727c5ba38f9c2eab4dd663784b86 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0Fct^7J29*~C-ahlfq}EY zBeIx*fm;}a85w5Hkzin8@bYwV4DmRgY+_)Lus}5-F(HA2lT$J7@GR48kD&8M9Fh&P z4svX0nE31`L--;!)4h*_?4?dF7UOBHF^H1yi87eQ@AkSmkh`skmEq4*iBb>QH4Y36 O3=E#GelF{r5}E)Qg)f-^ literal 0 HcmV?d00001 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