Initial commit
This commit is contained in:
commit
ae85d7dbff
62 changed files with 58194 additions and 0 deletions
51
Makefile
Normal file
51
Makefile
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
##
|
||||||
|
## EPITECH PROJECT, 2017
|
||||||
|
## Makefile
|
||||||
|
## File description:
|
||||||
|
## Makefile
|
||||||
|
##
|
||||||
|
|
||||||
|
#CC = gcc -Wall -Wextra -O3 -g
|
||||||
|
CC = gcc -Wall -Wextra -g
|
||||||
|
|
||||||
|
|
||||||
|
RM = rm -f
|
||||||
|
|
||||||
|
NAME = sokoban
|
||||||
|
|
||||||
|
SRC = src/main.c \
|
||||||
|
src/helper.c \
|
||||||
|
src/key_check.c \
|
||||||
|
src/loose_check.c \
|
||||||
|
src/find_player.c \
|
||||||
|
src/map_check.c \
|
||||||
|
src/map_reading.c \
|
||||||
|
src/movement.c \
|
||||||
|
src/play.c \
|
||||||
|
src/win_check.c \
|
||||||
|
src/zone_check.c \
|
||||||
|
lib/my_putchar.c \
|
||||||
|
lib/my_putstr.c \
|
||||||
|
src/ai/utils.o \
|
||||||
|
src/ai/priority_queue.o \
|
||||||
|
src/ai/hashtable.o \
|
||||||
|
src/ai/ai.o \
|
||||||
|
|
||||||
|
CFLAGS += -I./include/
|
||||||
|
|
||||||
|
OBJ = $(SRC:.c=.o)
|
||||||
|
|
||||||
|
all: $(NAME)
|
||||||
|
|
||||||
|
$(NAME): $(OBJ)
|
||||||
|
$(CC) -o $(NAME) $(OBJ) -lncurses
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) $(OBJ)
|
||||||
|
|
||||||
|
fclean: clean
|
||||||
|
$(RM) $(NAME)
|
||||||
|
|
||||||
|
re: fclean all
|
||||||
|
|
||||||
|
.PHONY: all clean fclean re
|
3
README.md
Normal file
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Deadlock and Optimizations
|
||||||
|
|
||||||
|
Explain your optimizations if applicable
|
13
include/libmy.h
Normal file
13
include/libmy.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** libmy.h
|
||||||
|
** File description:
|
||||||
|
** Contain all the prototypes of function in libmy
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#ifndef LIBMY_H
|
||||||
|
#define LIBMY_H
|
||||||
|
void my_putchar(char c);
|
||||||
|
int my_putstr(char const *str);
|
||||||
|
#endif
|
49
include/sokoban.h
Normal file
49
include/sokoban.h
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** bsq.h
|
||||||
|
** File description:
|
||||||
|
** Contain all the prototypes needed for BSQ
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BSQ_H
|
||||||
|
#define BSQ_H
|
||||||
|
typedef struct sokoban {
|
||||||
|
char *buffer;
|
||||||
|
char **map;
|
||||||
|
char **map_save;
|
||||||
|
int lines;
|
||||||
|
int player_x;
|
||||||
|
int player_y;
|
||||||
|
char const *base_path;
|
||||||
|
int win;
|
||||||
|
int case_number;
|
||||||
|
int num_chars_map;
|
||||||
|
} sokoban_t;
|
||||||
|
int helper(void);
|
||||||
|
char *read_map(int reading);
|
||||||
|
char *open_map(char const *path);
|
||||||
|
sokoban_t make_map(char const *path, sokoban_t sokoban);
|
||||||
|
int play(char const *path);
|
||||||
|
sokoban_t count_lines(sokoban_t sokoban);
|
||||||
|
int count_columns(sokoban_t sokoban, int position);
|
||||||
|
sokoban_t check_if_player(sokoban_t sokoban, int y, int x);
|
||||||
|
sokoban_t find_player(sokoban_t sokoban);
|
||||||
|
sokoban_t key_check(sokoban_t sokoban, int key);
|
||||||
|
sokoban_t move_right(sokoban_t sokoban);
|
||||||
|
sokoban_t move_left(sokoban_t sokoban);
|
||||||
|
sokoban_t move_up(sokoban_t sokoban);
|
||||||
|
sokoban_t move_down(sokoban_t sokoban);
|
||||||
|
void win_check(sokoban_t sokoban);
|
||||||
|
int count_storage_zone(int y, int x, sokoban_t sokoban);
|
||||||
|
int count_storage_won(int y, int x, sokoban_t sokoban);
|
||||||
|
sokoban_t check_zone_reset(sokoban_t sokoban);
|
||||||
|
sokoban_t reset_zone(int y, int x, sokoban_t sokoban);
|
||||||
|
void loose_check(sokoban_t sokoban);
|
||||||
|
void storage_loose_check(int y, int x, sokoban_t sokoban);
|
||||||
|
void map_check(sokoban_t sokoban);
|
||||||
|
int count_case_number(int y, int x, sokoban_t sokoban);
|
||||||
|
int count_player(int y, int x, sokoban_t sokoban);
|
||||||
|
sokoban_t game_management(sokoban_t sokoban);
|
||||||
|
int check_tile(int y, int x, sokoban_t sokoban);
|
||||||
|
int is_goal_cell(int y, int x, sokoban_t sokoban);
|
||||||
|
#endif
|
14
lib/my_putchar.c
Normal file
14
lib/my_putchar.c
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** my_putchar
|
||||||
|
** File description:
|
||||||
|
** put char
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void my_putchar(char c)
|
||||||
|
{
|
||||||
|
write(1, &c, 1);
|
||||||
|
}
|
19
lib/my_putstr.c
Normal file
19
lib/my_putstr.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** my_putstr
|
||||||
|
** File description:
|
||||||
|
** Display one by one the characters of a string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
|
||||||
|
int my_putstr(char const *str)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (str[i] != '\0') {
|
||||||
|
my_putchar(str[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
4793
maps_suites/Aymeric_Du_Peloux_282.xsb
Normal file
4793
maps_suites/Aymeric_Du_Peloux_282.xsb
Normal file
File diff suppressed because it is too large
Load diff
1718
maps_suites/Grigr2001_100.xsb
Normal file
1718
maps_suites/Grigr2001_100.xsb
Normal file
File diff suppressed because it is too large
Load diff
712
maps_suites/Grigr2002_40.xsb
Normal file
712
maps_suites/Grigr2002_40.xsb
Normal file
|
@ -0,0 +1,712 @@
|
||||||
|
;These levels are made GRIGoRusha
|
||||||
|
;You always can find these levels, and as many new levels
|
||||||
|
;of this author on his home page: http://grigr.narod.ru
|
||||||
|
;You may write to the author email: grigr@yandex.ru
|
||||||
|
|
||||||
|
;I done not interested with my CopyRights !!!
|
||||||
|
;You may do everything with these levels, that want.
|
||||||
|
;I shall be pleased, if you place them in the program or on the site.
|
||||||
|
;Do not ask me the sanction.
|
||||||
|
|
||||||
|
;101
|
||||||
|
#####
|
||||||
|
# #########
|
||||||
|
# $ ## #
|
||||||
|
##$#... #
|
||||||
|
## ##$#### ##
|
||||||
|
# ##..+ # #
|
||||||
|
# $ # $ #
|
||||||
|
# ###$### #
|
||||||
|
##### ##
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Double choice #101
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;102
|
||||||
|
########
|
||||||
|
# # ###
|
||||||
|
## $ #
|
||||||
|
# ##$# #
|
||||||
|
# $ #..# ##
|
||||||
|
###$#..# #
|
||||||
|
#@$.. #
|
||||||
|
#$# # #
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Wake up #102
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;103
|
||||||
|
#########
|
||||||
|
### # #
|
||||||
|
# *.* # #
|
||||||
|
# * *@* # #
|
||||||
|
# # .*. # #
|
||||||
|
# $ $ $ #
|
||||||
|
## #######
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Colobok #103
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;104
|
||||||
|
######
|
||||||
|
# ####
|
||||||
|
# # $ #
|
||||||
|
# *#* #
|
||||||
|
##$.@.$##
|
||||||
|
# *.* #
|
||||||
|
# # # # #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Red star #104
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;105
|
||||||
|
#########
|
||||||
|
# #@ #
|
||||||
|
# **#$##
|
||||||
|
### # #
|
||||||
|
# $$**#.# #
|
||||||
|
# # # . #
|
||||||
|
# ##. ##
|
||||||
|
## .#$#
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Kruchok #105
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;106
|
||||||
|
####
|
||||||
|
# ####
|
||||||
|
## $ ###
|
||||||
|
# ##$.. #
|
||||||
|
# $@# . #
|
||||||
|
## #$$$# ##
|
||||||
|
# . # #
|
||||||
|
# .. ## #
|
||||||
|
### ##
|
||||||
|
#### #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Anchor #106
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;107
|
||||||
|
#####
|
||||||
|
###### ##
|
||||||
|
# $ $ #
|
||||||
|
# # ###$#@#
|
||||||
|
# # $ ##
|
||||||
|
##.... #$$ #
|
||||||
|
# #.### # #
|
||||||
|
# . #
|
||||||
|
## ######
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Return #107
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;108
|
||||||
|
###########
|
||||||
|
# # # #
|
||||||
|
#@ $ #
|
||||||
|
# ##*## #
|
||||||
|
## ##.## ##
|
||||||
|
# #... ##
|
||||||
|
# #$##.# #
|
||||||
|
# $ $$ #
|
||||||
|
##### # #
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Contra #108
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;109
|
||||||
|
####
|
||||||
|
### ###
|
||||||
|
# $$ ##
|
||||||
|
# # #
|
||||||
|
# # #* #
|
||||||
|
# # $#. #
|
||||||
|
## #$@#*.#
|
||||||
|
# $#..#
|
||||||
|
# # .* #
|
||||||
|
####### #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Krasotka #109
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;110
|
||||||
|
#####
|
||||||
|
## #########
|
||||||
|
# ## ##
|
||||||
|
## #$#...$ $# #
|
||||||
|
## #*#.#. $ #
|
||||||
|
# #$$$#+#***# #
|
||||||
|
# $ # #*#. . ##
|
||||||
|
# #$ $...#$# ##
|
||||||
|
## ## #
|
||||||
|
######### ##
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Father diode #110
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
for David Holland
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;111
|
||||||
|
########
|
||||||
|
# # #
|
||||||
|
# ##
|
||||||
|
## ## #
|
||||||
|
# *..#$#
|
||||||
|
# *.. ##
|
||||||
|
##$### #
|
||||||
|
# $$@#
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Aniska #111
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;112
|
||||||
|
##########
|
||||||
|
# ## #
|
||||||
|
# $ #
|
||||||
|
##.#*## ##
|
||||||
|
# ..* @ ##
|
||||||
|
# *** # #
|
||||||
|
###.# # #
|
||||||
|
# #$$ #
|
||||||
|
# $ ###
|
||||||
|
# # #
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Serpik #112
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;113
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
####. ####
|
||||||
|
# . ###
|
||||||
|
# .$.$$*.* #
|
||||||
|
### $@$ #
|
||||||
|
####$.####
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: My heart #113
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
thank Serg Belyaev
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;114
|
||||||
|
#####
|
||||||
|
# ######
|
||||||
|
# #$## #
|
||||||
|
# $ #
|
||||||
|
###$ ##$##
|
||||||
|
# ... #
|
||||||
|
#$ .#$#
|
||||||
|
## ... #
|
||||||
|
# $#.#$#
|
||||||
|
# @ #
|
||||||
|
# # ##
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Kuterma #114
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;115
|
||||||
|
####
|
||||||
|
# #######
|
||||||
|
# $@# #
|
||||||
|
# #**. #
|
||||||
|
##$# .# #
|
||||||
|
# # *# ##
|
||||||
|
# * ##
|
||||||
|
# # ## #
|
||||||
|
### #
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Trevoga #115
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;116
|
||||||
|
#####
|
||||||
|
##### #####
|
||||||
|
# # #$# #
|
||||||
|
# # ... # #
|
||||||
|
# $ #.#*# $ #
|
||||||
|
###$###.. ###
|
||||||
|
# $ #
|
||||||
|
# #@###$# #
|
||||||
|
# # # #
|
||||||
|
##### #####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Sheriff #116
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;117
|
||||||
|
####
|
||||||
|
## ###
|
||||||
|
#### #
|
||||||
|
# #*.*# #
|
||||||
|
# .#.# #
|
||||||
|
# #*.* #
|
||||||
|
## # $##
|
||||||
|
# $@# ##
|
||||||
|
## #$# #
|
||||||
|
# $ #
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Dreams #117
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;118
|
||||||
|
#####
|
||||||
|
##### #
|
||||||
|
# #$# #
|
||||||
|
# $ $ #
|
||||||
|
##$#@## #
|
||||||
|
# # #
|
||||||
|
# $##$# ##
|
||||||
|
# # .# #
|
||||||
|
## ... #
|
||||||
|
###..# #
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Irka #118
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;119
|
||||||
|
########
|
||||||
|
#### # #
|
||||||
|
# # #
|
||||||
|
# $ ##$##
|
||||||
|
# ## ## ###
|
||||||
|
## .**## #
|
||||||
|
# *+* # #
|
||||||
|
## #### #
|
||||||
|
# ###
|
||||||
|
########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Zagar #119
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;120
|
||||||
|
#### #####
|
||||||
|
# ##### #
|
||||||
|
# $ @ $ #
|
||||||
|
# # ...# ##
|
||||||
|
##$##.#.# ##
|
||||||
|
# $.#*# ##
|
||||||
|
# # $$ #
|
||||||
|
######### #
|
||||||
|
## #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Depth #120
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;121
|
||||||
|
##### ####
|
||||||
|
# #### #
|
||||||
|
# $$ #
|
||||||
|
##$##### #
|
||||||
|
# #.. $ ##
|
||||||
|
# ...## #
|
||||||
|
# #.. #$@#
|
||||||
|
#### # #
|
||||||
|
##$#### ##
|
||||||
|
# $ #
|
||||||
|
# ## #
|
||||||
|
##########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Honour #121
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;122
|
||||||
|
#######
|
||||||
|
# # ###
|
||||||
|
### $# . #
|
||||||
|
# $.$. #
|
||||||
|
# .$.$.###
|
||||||
|
## $.$.$#
|
||||||
|
# .$.$@#
|
||||||
|
###.$###
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Marazm #122
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;123
|
||||||
|
#########
|
||||||
|
# ## #
|
||||||
|
# $ ###
|
||||||
|
# ##$ # #
|
||||||
|
## # $$@#
|
||||||
|
# *. ## #
|
||||||
|
# #.###$##
|
||||||
|
#$#*## #
|
||||||
|
# ..# #
|
||||||
|
##.. ##
|
||||||
|
# #####
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: KUB #123
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;124
|
||||||
|
#### #####
|
||||||
|
# ## ## #
|
||||||
|
# ### $ #
|
||||||
|
# $$ $ ##
|
||||||
|
## ####$##
|
||||||
|
## . $ #
|
||||||
|
# # ... #
|
||||||
|
##$##**###
|
||||||
|
# $ ...#
|
||||||
|
# ##+#
|
||||||
|
########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Pryanik #124
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;125
|
||||||
|
####
|
||||||
|
##### ## #
|
||||||
|
# ### #
|
||||||
|
# $@$ #
|
||||||
|
## $#$# ##
|
||||||
|
# ...# ###
|
||||||
|
# #**#$$ #
|
||||||
|
# ... # #
|
||||||
|
## # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Svadba #125
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;126
|
||||||
|
####
|
||||||
|
#######@ #
|
||||||
|
# #.*.$ #
|
||||||
|
# .#.$ #
|
||||||
|
# #.*.$##
|
||||||
|
## $# ##
|
||||||
|
# ## #
|
||||||
|
##$ # #
|
||||||
|
# $ ### #
|
||||||
|
# ## ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Blue Eye #126
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;127
|
||||||
|
#####
|
||||||
|
## #########
|
||||||
|
# ## ##
|
||||||
|
## #$#...$ $# #
|
||||||
|
## .#$#.#. $ #
|
||||||
|
# #$$*#+#*$*# #
|
||||||
|
# $ #.#$#. . ##
|
||||||
|
# #$ $...#$# ##
|
||||||
|
## ## #
|
||||||
|
######### ##
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Ziko-City #127
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;128
|
||||||
|
#######
|
||||||
|
### # #
|
||||||
|
# $@ #
|
||||||
|
# # #..#
|
||||||
|
# $$##..#
|
||||||
|
#### .**#
|
||||||
|
# $$.# ##
|
||||||
|
# # ## #
|
||||||
|
#### $ #
|
||||||
|
# # #
|
||||||
|
########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Uspex #128
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;129
|
||||||
|
####
|
||||||
|
###### #
|
||||||
|
# #.. $#
|
||||||
|
### #..$ #
|
||||||
|
# $ $ .# $###
|
||||||
|
# $ #+ $ $ #
|
||||||
|
### $..# #
|
||||||
|
#$ ..# ###
|
||||||
|
# ######
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Perekrestok #129
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;130
|
||||||
|
#####
|
||||||
|
## #
|
||||||
|
# #####
|
||||||
|
##$# ## #
|
||||||
|
#@ # $ #
|
||||||
|
# $.*.* ###
|
||||||
|
# $.*. #
|
||||||
|
## # * #
|
||||||
|
##### #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: for Paul #130
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;131
|
||||||
|
#####
|
||||||
|
##### ## #
|
||||||
|
# ### $ #
|
||||||
|
# $ ##
|
||||||
|
###### ### #$##
|
||||||
|
# #..... # ###
|
||||||
|
#@# $.###.$# #
|
||||||
|
# #.###.$ # #
|
||||||
|
### #....$## #
|
||||||
|
## $ $ ######
|
||||||
|
## ####$##
|
||||||
|
# $$ $ #
|
||||||
|
# ### #
|
||||||
|
# ## #####
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Nadejda #131
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;132
|
||||||
|
####
|
||||||
|
### ########
|
||||||
|
# $ .+.# #
|
||||||
|
# $ #$#*. #
|
||||||
|
###$##...# #
|
||||||
|
## # $$$ ##
|
||||||
|
# # # ## #
|
||||||
|
# #
|
||||||
|
# ########
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Flying idea #132
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;133
|
||||||
|
########
|
||||||
|
#### # #
|
||||||
|
# #.#. #
|
||||||
|
# ***# #
|
||||||
|
# #... ##
|
||||||
|
### ##$## ##
|
||||||
|
# $# $ ##
|
||||||
|
# $ @## #
|
||||||
|
## $##### #
|
||||||
|
# # #####
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Sambist #133
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;134
|
||||||
|
##### #####
|
||||||
|
# ### #
|
||||||
|
# $ $ #
|
||||||
|
## #...# ##
|
||||||
|
# $***$ ##
|
||||||
|
## ...# #
|
||||||
|
#@ #$$ #
|
||||||
|
## ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Rogalik #134
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;135
|
||||||
|
#### #####
|
||||||
|
# #### #
|
||||||
|
# $ #
|
||||||
|
# #$###$##
|
||||||
|
## .*.*..#
|
||||||
|
## ## # ##
|
||||||
|
# $ #
|
||||||
|
# ##@ #
|
||||||
|
##########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Mekom #135
|
||||||
|
Comment:
|
||||||
|
color blue
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;136
|
||||||
|
########
|
||||||
|
# #@ #
|
||||||
|
# $ ####
|
||||||
|
# $#.## #
|
||||||
|
## ... # #
|
||||||
|
# ##.. $ #
|
||||||
|
##$##.#$# #
|
||||||
|
# $ $ #
|
||||||
|
# #######
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Oberon #136
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;137
|
||||||
|
##########
|
||||||
|
# ## #
|
||||||
|
# $ @ $ #
|
||||||
|
## #### ##
|
||||||
|
# ..## #
|
||||||
|
# $.*. $#
|
||||||
|
# #.## #
|
||||||
|
### # #
|
||||||
|
# $#
|
||||||
|
# # #
|
||||||
|
# #####
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: SokoSutra #137
|
||||||
|
Comment:
|
||||||
|
color red
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;138
|
||||||
|
#####
|
||||||
|
# #######
|
||||||
|
# $ #
|
||||||
|
## ##... #
|
||||||
|
##$##$##$##
|
||||||
|
# ...## ##
|
||||||
|
# $@$ #
|
||||||
|
####### #
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Suriken #138
|
||||||
|
Comment:
|
||||||
|
color yellow
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;139
|
||||||
|
####
|
||||||
|
# ### #####
|
||||||
|
# $ ### #
|
||||||
|
# $ $@$ #
|
||||||
|
##$# ...#$##
|
||||||
|
## ##.#. ##
|
||||||
|
# # # #
|
||||||
|
# #.*.$ #
|
||||||
|
######### #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Mad Dog #139
|
||||||
|
Comment:
|
||||||
|
color purple
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;140
|
||||||
|
#####
|
||||||
|
# #########
|
||||||
|
# $ ##
|
||||||
|
##$### # $...#
|
||||||
|
# $ ## $ .#
|
||||||
|
## # ..# $#.#
|
||||||
|
#..##.## $ #
|
||||||
|
#. $ ## $###
|
||||||
|
# # $$@# #
|
||||||
|
##### ####
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Juravli #140
|
||||||
|
Comment:
|
||||||
|
color green
|
||||||
|
Comment-End:
|
634
maps_suites/GrigrSpecial_40.xsb
Normal file
634
maps_suites/GrigrSpecial_40.xsb
Normal file
|
@ -0,0 +1,634 @@
|
||||||
|
;GrigrSpecial01
|
||||||
|
#####
|
||||||
|
# #########
|
||||||
|
# $ ## #
|
||||||
|
##$#.. #
|
||||||
|
## ##*#### ##
|
||||||
|
# ##. @ # #
|
||||||
|
# $.. # $ #
|
||||||
|
# ###$### #
|
||||||
|
## #####
|
||||||
|
#### #
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Krutoy Povorot
|
||||||
|
|
||||||
|
;GrigrSpecial02
|
||||||
|
##########
|
||||||
|
# .## ##
|
||||||
|
# $@$# #
|
||||||
|
##$#.#. $ #
|
||||||
|
# #*$*# #
|
||||||
|
## #. . ##
|
||||||
|
# .#$# ##
|
||||||
|
# #
|
||||||
|
#### ##
|
||||||
|
#####
|
||||||
|
Author: David Holland and GRIGoRusha
|
||||||
|
Title: Jump in Depth
|
||||||
|
Comment:
|
||||||
|
remodel DH Bagatelle 10
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial03
|
||||||
|
####
|
||||||
|
######## @#
|
||||||
|
# $ $ $ $#
|
||||||
|
# #*. .# ##
|
||||||
|
# . #. #
|
||||||
|
##$### . #
|
||||||
|
# #####
|
||||||
|
#######
|
||||||
|
Author: Aymeric du Peloux and GRIGoRusha
|
||||||
|
Title: New hairdress
|
||||||
|
Comment:
|
||||||
|
remodel MicroCosmos 37
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial04
|
||||||
|
#####
|
||||||
|
# ####
|
||||||
|
# $.$ ##
|
||||||
|
##$#@# #
|
||||||
|
# ... #
|
||||||
|
##$#.# ##
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: Aymeric du Peloux and GRIGoRusha
|
||||||
|
Title: Hybrid
|
||||||
|
Comment:
|
||||||
|
remodel NaboKosmos 32
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial05
|
||||||
|
#####
|
||||||
|
## ####
|
||||||
|
# # #
|
||||||
|
## # ## #
|
||||||
|
# # #
|
||||||
|
# $**** ##
|
||||||
|
# $ ..* #
|
||||||
|
##@ # * #
|
||||||
|
##### #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: The Dancer
|
||||||
|
Comment:
|
||||||
|
Only for Paul and with help Paul
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial06
|
||||||
|
#########
|
||||||
|
# ## #
|
||||||
|
# $ #
|
||||||
|
## #*#$ #
|
||||||
|
# *.# ##
|
||||||
|
##$#@*. ###
|
||||||
|
# .*.# #
|
||||||
|
# $ # # #
|
||||||
|
# ## #
|
||||||
|
## ######
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: SkyFlier
|
||||||
|
|
||||||
|
;GrigrSpecial07
|
||||||
|
##########
|
||||||
|
# ## #
|
||||||
|
# # $ #
|
||||||
|
# #*# ##
|
||||||
|
### *+* #
|
||||||
|
##$***$ #
|
||||||
|
# #..###
|
||||||
|
# #
|
||||||
|
# # # #
|
||||||
|
#### #
|
||||||
|
#####
|
||||||
|
Author: Betepok
|
||||||
|
Title: Znaki
|
||||||
|
|
||||||
|
;GrigrSpecial08
|
||||||
|
#####
|
||||||
|
#@ #
|
||||||
|
###$# #
|
||||||
|
# $ #
|
||||||
|
# .*.###
|
||||||
|
#$.*.$ #
|
||||||
|
# .*. #
|
||||||
|
## #$# ##
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Right way
|
||||||
|
|
||||||
|
;GrigrSpecial09
|
||||||
|
####
|
||||||
|
## #
|
||||||
|
## $ ###
|
||||||
|
# $@* #
|
||||||
|
# * #.#
|
||||||
|
##* * #
|
||||||
|
# . . #
|
||||||
|
# #$###
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
Author: Aymeric du Peloux and GRIGoRusha
|
||||||
|
Title: SnowFall
|
||||||
|
Comment:
|
||||||
|
remodel PicoKosmos 20
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial10
|
||||||
|
#####
|
||||||
|
## #
|
||||||
|
# # ##
|
||||||
|
##*. #
|
||||||
|
# *.# #
|
||||||
|
#@#*$ #
|
||||||
|
# *. # #
|
||||||
|
##$# # ##
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Kiborg
|
||||||
|
Comment:
|
||||||
|
for Fred, with many Thanks for You
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial11
|
||||||
|
#####
|
||||||
|
## #
|
||||||
|
# .#$#
|
||||||
|
## * @#
|
||||||
|
## ***##
|
||||||
|
# * #
|
||||||
|
# # # # #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: Kevin B. Reilly and GRIGoRusha
|
||||||
|
Title: Slider from Game Life
|
||||||
|
Comment:
|
||||||
|
design some level from Kevin levels sets
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial12
|
||||||
|
########
|
||||||
|
# * #
|
||||||
|
#@ * * #
|
||||||
|
##$$*$* #
|
||||||
|
# $ * . #
|
||||||
|
# # . ###
|
||||||
|
# . . #
|
||||||
|
#######
|
||||||
|
Author: YASGen, Brian Damgaard and GRIGoRusha
|
||||||
|
Title: Impossible Way
|
||||||
|
Comment:
|
||||||
|
for Brian Damgaard
|
||||||
|
design some level from YASGen level set
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial13
|
||||||
|
####
|
||||||
|
#### #
|
||||||
|
# $ #
|
||||||
|
# $# ###
|
||||||
|
# @# # #
|
||||||
|
# ## $ #
|
||||||
|
#.* # #
|
||||||
|
#.*..* ##
|
||||||
|
## ### ##
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Soldafon
|
||||||
|
|
||||||
|
;GrigrSpecial14
|
||||||
|
#####
|
||||||
|
### ##
|
||||||
|
# #
|
||||||
|
# #..# ##
|
||||||
|
#$#****.#
|
||||||
|
# #
|
||||||
|
## #### ##
|
||||||
|
#@$$ #
|
||||||
|
# ## #
|
||||||
|
##########
|
||||||
|
Author: Nakamiya and GRIGoRusha
|
||||||
|
Title: Lost Hunter
|
||||||
|
Comment:
|
||||||
|
for Nakamiya
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial15
|
||||||
|
##### #####
|
||||||
|
# ### #
|
||||||
|
# @ $ #
|
||||||
|
##$##$$#$##
|
||||||
|
# #..# #
|
||||||
|
#$ #... #
|
||||||
|
# #..# #
|
||||||
|
## ##$####
|
||||||
|
# ## #
|
||||||
|
# #
|
||||||
|
# ## #
|
||||||
|
########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Roga i Kopita
|
||||||
|
Comment:
|
||||||
|
for York Shen !!!
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial16
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
# $ #
|
||||||
|
#### #$# ##
|
||||||
|
# # #
|
||||||
|
# $##@# #
|
||||||
|
## *..*# #
|
||||||
|
# *..*. #
|
||||||
|
#$# #$###
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Matros
|
||||||
|
|
||||||
|
;GrigrSpecial17
|
||||||
|
######
|
||||||
|
# * #
|
||||||
|
### ##
|
||||||
|
# *.@** #
|
||||||
|
# $* #
|
||||||
|
### ####
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Wanderer
|
||||||
|
|
||||||
|
;GrigrSpecial18
|
||||||
|
#####
|
||||||
|
# ###
|
||||||
|
# .$. #
|
||||||
|
###$.$@ #
|
||||||
|
# . .$###
|
||||||
|
# $. #
|
||||||
|
## ##$#
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
Author: Lee J Haywood and GRIGoRusha
|
||||||
|
Title: The Rain
|
||||||
|
|
||||||
|
;GrigrSpecial19
|
||||||
|
########
|
||||||
|
# # #
|
||||||
|
# $ @#$#
|
||||||
|
# # #
|
||||||
|
## . .$#
|
||||||
|
## ##. ##
|
||||||
|
# ##. #
|
||||||
|
# $.$.$ #
|
||||||
|
# ######
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Russian Beauty
|
||||||
|
|
||||||
|
|
||||||
|
;GrigrSpecial20
|
||||||
|
####
|
||||||
|
### @####
|
||||||
|
# $$$ #
|
||||||
|
# #.*.# #
|
||||||
|
# .* # #
|
||||||
|
## #*.# ##
|
||||||
|
# $ #
|
||||||
|
# ## #
|
||||||
|
##########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Brave Heart
|
||||||
|
|
||||||
|
;GrigrSpecial21
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
####. ###
|
||||||
|
# $$$@ #
|
||||||
|
# .. # #
|
||||||
|
##$$$ #
|
||||||
|
#...####
|
||||||
|
## #
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Light Draft
|
||||||
|
Comment:
|
||||||
|
for Monry
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial22
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# ##
|
||||||
|
### # #
|
||||||
|
# $.@# #
|
||||||
|
# .$.$. #
|
||||||
|
##.$##$##
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Assol
|
||||||
|
|
||||||
|
;GrigrSpecial23
|
||||||
|
####
|
||||||
|
# ####
|
||||||
|
# * #
|
||||||
|
### ....#
|
||||||
|
# $*$$ #
|
||||||
|
# . ###
|
||||||
|
###$*$@#
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Elki-Palki
|
||||||
|
|
||||||
|
;GrigrSpecial24
|
||||||
|
#####
|
||||||
|
# + #
|
||||||
|
#$.$#
|
||||||
|
# * #
|
||||||
|
# * #
|
||||||
|
# * ######
|
||||||
|
## * $ #
|
||||||
|
# * **.*.#
|
||||||
|
# $ #
|
||||||
|
## #######
|
||||||
|
####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Duble Hanoy
|
||||||
|
Comment:
|
||||||
|
for Aymeric
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial25
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# #
|
||||||
|
### # #
|
||||||
|
#@****.#
|
||||||
|
# # *.##
|
||||||
|
# # #
|
||||||
|
## #$# ##
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Ribolov
|
||||||
|
|
||||||
|
;GrigrSpecial26
|
||||||
|
########
|
||||||
|
# @ ###
|
||||||
|
## ## # #
|
||||||
|
# ## $ #
|
||||||
|
# $##$## ##
|
||||||
|
# $ .$.$$#
|
||||||
|
##$..... #
|
||||||
|
# .#$#.$#
|
||||||
|
# ..$.. #
|
||||||
|
##### $$#
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: The Temple
|
||||||
|
Comment:
|
||||||
|
for Hir
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial27
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# #
|
||||||
|
##$#$$$@#
|
||||||
|
# # ####
|
||||||
|
## ## $ #
|
||||||
|
#.... . #
|
||||||
|
# ### #
|
||||||
|
##### ####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Gambit
|
||||||
|
Comment:
|
||||||
|
date: 02.01.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial28
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
# $$@#
|
||||||
|
## ### ##
|
||||||
|
# .. #
|
||||||
|
## ## #
|
||||||
|
#.**##$##
|
||||||
|
# #
|
||||||
|
##### #
|
||||||
|
#####
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Baton
|
||||||
|
Comment:
|
||||||
|
date: 02.01.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial29
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## # ###
|
||||||
|
# * $ #
|
||||||
|
# *** #
|
||||||
|
#.* * @#
|
||||||
|
# * #
|
||||||
|
########
|
||||||
|
Author: GRIGoRusha
|
||||||
|
Title: Vilka
|
||||||
|
Comment:
|
||||||
|
date: 07.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial30
|
||||||
|
####
|
||||||
|
#@ #
|
||||||
|
##$ ###
|
||||||
|
# * #
|
||||||
|
### * #
|
||||||
|
# * *###
|
||||||
|
# * #
|
||||||
|
### . #
|
||||||
|
#####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Turn
|
||||||
|
Comment:
|
||||||
|
date: 23.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial31
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
##### ###
|
||||||
|
# **$ #
|
||||||
|
# .* #
|
||||||
|
# # * ###
|
||||||
|
#### @##
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Trap
|
||||||
|
Comment:
|
||||||
|
date: 23.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial32
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# $ #
|
||||||
|
###* * #
|
||||||
|
# * . #
|
||||||
|
# #* #
|
||||||
|
## * @##
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Rain
|
||||||
|
Comment:
|
||||||
|
date: 23.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial33
|
||||||
|
####
|
||||||
|
### @#
|
||||||
|
# $ ###
|
||||||
|
#.$.$ #
|
||||||
|
# .$. #
|
||||||
|
#.$#$###
|
||||||
|
# . #
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Cell
|
||||||
|
Comment:
|
||||||
|
date: 29.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial34
|
||||||
|
#####
|
||||||
|
# ##
|
||||||
|
# $. #
|
||||||
|
##$. #
|
||||||
|
# . #
|
||||||
|
#$.$###
|
||||||
|
#@.$ #
|
||||||
|
#$.$. #
|
||||||
|
# ###
|
||||||
|
#####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Line
|
||||||
|
Comment:
|
||||||
|
date: 30.03.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial35
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# #
|
||||||
|
#.* ###
|
||||||
|
# *# #
|
||||||
|
# *@$ #
|
||||||
|
# ** ###
|
||||||
|
### #
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Hook
|
||||||
|
Comment:
|
||||||
|
date: 02.04.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial36
|
||||||
|
####
|
||||||
|
#@ #
|
||||||
|
##.$###
|
||||||
|
# $ $ #
|
||||||
|
# .$. ##
|
||||||
|
# $.$ #
|
||||||
|
##.#. #
|
||||||
|
# ###
|
||||||
|
#####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Tree
|
||||||
|
Comment:
|
||||||
|
date: 03.04.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
|
||||||
|
;GrigrSpecial37
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
### *####
|
||||||
|
# $ . #
|
||||||
|
# * *#
|
||||||
|
###@* * #
|
||||||
|
## * #
|
||||||
|
### #
|
||||||
|
####
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Vamp
|
||||||
|
Comment:
|
||||||
|
date: 04.04.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial38
|
||||||
|
####
|
||||||
|
# ##
|
||||||
|
#$. #
|
||||||
|
#.$ ####
|
||||||
|
## .$.@ #
|
||||||
|
# $.$ #
|
||||||
|
# $. ####
|
||||||
|
# .$ #
|
||||||
|
######
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Tool
|
||||||
|
Comment:
|
||||||
|
date: 05.04.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial39
|
||||||
|
####
|
||||||
|
# ##
|
||||||
|
# #
|
||||||
|
# * #
|
||||||
|
#*@*#
|
||||||
|
# * ##
|
||||||
|
### * #
|
||||||
|
# *$ #
|
||||||
|
# . ##
|
||||||
|
#######
|
||||||
|
Author: Dries De Clercq and GRIGoRusha
|
||||||
|
Title: Unfinished Fish
|
||||||
|
Comment:
|
||||||
|
date: 06.04.05
|
||||||
|
Comment-End:
|
||||||
|
|
||||||
|
;GrigrSpecial40
|
||||||
|
#####
|
||||||
|
### #
|
||||||
|
## #
|
||||||
|
# *** ##
|
||||||
|
# @* #
|
||||||
|
# ** ##
|
||||||
|
### #
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
Author: Aymeric du Peloux and GRIGoRusha
|
||||||
|
Title: Finish
|
||||||
|
Comment:
|
||||||
|
date: 15.04.05
|
||||||
|
For Erim Sever
|
||||||
|
|
||||||
|
for play in this level in normal style load NaboKosmos 40a from RemodelClub
|
||||||
|
Comment-End:
|
1279
maps_suites/Holland_81.xsb
Normal file
1279
maps_suites/Holland_81.xsb
Normal file
File diff suppressed because it is too large
Load diff
1818
maps_suites/Microban II_135.xsb
Normal file
1818
maps_suites/Microban II_135.xsb
Normal file
File diff suppressed because it is too large
Load diff
1841
maps_suites/Microban_155.xsb
Normal file
1841
maps_suites/Microban_155.xsb
Normal file
File diff suppressed because it is too large
Load diff
892
maps_suites/Sasquatch II_50.xsb
Normal file
892
maps_suites/Sasquatch II_50.xsb
Normal file
|
@ -0,0 +1,892 @@
|
||||||
|
; Sasquatch II (50 puzzles, released August, 1999)
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# $ $ $ #
|
||||||
|
### # # #
|
||||||
|
# # #
|
||||||
|
## ### ##
|
||||||
|
# .....@#
|
||||||
|
# $ $ #
|
||||||
|
# ### ###
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
####
|
||||||
|
######..#
|
||||||
|
# . #
|
||||||
|
# # ..#
|
||||||
|
# ## ###
|
||||||
|
# $ ##
|
||||||
|
# # #$ @#
|
||||||
|
# # $ $ #
|
||||||
|
# ## $ ##
|
||||||
|
##### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
#####
|
||||||
|
## ##
|
||||||
|
# ##
|
||||||
|
# @ #
|
||||||
|
############ #. #
|
||||||
|
# #.##
|
||||||
|
# ############.#
|
||||||
|
# .#
|
||||||
|
##$#$#$#$#$#$#.#
|
||||||
|
# .#
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
#####
|
||||||
|
### #
|
||||||
|
#### # $$ ####
|
||||||
|
# ### $ # #
|
||||||
|
# ###$$ $ #
|
||||||
|
# *# @ ## # #
|
||||||
|
## ##### #..# ##
|
||||||
|
# ## #..# #
|
||||||
|
## $ # #.. #
|
||||||
|
# ## $ # ..####
|
||||||
|
# ## # #
|
||||||
|
# #### ##
|
||||||
|
# #####
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### #
|
||||||
|
# . # ###
|
||||||
|
# $. $ $ #
|
||||||
|
# #.## $ #
|
||||||
|
###@#..#$ #
|
||||||
|
# ##.# ##
|
||||||
|
# $ $ .# $#
|
||||||
|
## ###.## #
|
||||||
|
# #
|
||||||
|
##### ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
#####
|
||||||
|
## ######
|
||||||
|
# @ # #
|
||||||
|
# # $ * #
|
||||||
|
#### ###$#. #
|
||||||
|
#.....# .##
|
||||||
|
#.....# #$#. ###
|
||||||
|
### . ## #
|
||||||
|
# ## ##$ ### ####
|
||||||
|
# # # $ $ #
|
||||||
|
# $$$# # $ $ #
|
||||||
|
##### # ###### #
|
||||||
|
#$ # ####
|
||||||
|
## $ # #
|
||||||
|
# $ #
|
||||||
|
# ###
|
||||||
|
######
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
#####
|
||||||
|
########## #
|
||||||
|
#. ........ .##
|
||||||
|
# #### # ##
|
||||||
|
## $ # # ##
|
||||||
|
# $ # # # ##
|
||||||
|
# $ $ # # # #
|
||||||
|
# $ $ # @ #
|
||||||
|
# $ $$ # #
|
||||||
|
# $## ###########
|
||||||
|
# # #
|
||||||
|
# ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
#########
|
||||||
|
##### #
|
||||||
|
## #### #
|
||||||
|
# $ # @ *..*###
|
||||||
|
# # # #.... #
|
||||||
|
# #$# #.... #
|
||||||
|
# $# # ##$### #
|
||||||
|
# #$ ##
|
||||||
|
## $ $# ####
|
||||||
|
## $ ####
|
||||||
|
### $$ # #
|
||||||
|
# # ###
|
||||||
|
######
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
####
|
||||||
|
#### ## ###
|
||||||
|
#### $ # #*# ####
|
||||||
|
######## $ $ # ### # #
|
||||||
|
# $ $ $ $ ## # # ##
|
||||||
|
## $ $ #### $ ####### #
|
||||||
|
# $$ ##### $ ## # #
|
||||||
|
# ## ## $ $ # #
|
||||||
|
#.# $ # $ $ #### ## ## #
|
||||||
|
#.# $ $ $ #### # #
|
||||||
|
#.#.# $ # # #
|
||||||
|
#.#. ### # ######## #
|
||||||
|
#.#.###@#### ## # ##
|
||||||
|
#............. # ###### #
|
||||||
|
# .########### ## # ####
|
||||||
|
##### # #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
####
|
||||||
|
##### ##### ##
|
||||||
|
## ### ##
|
||||||
|
## * * . $ # @ ##
|
||||||
|
# ## * ## ### # #
|
||||||
|
# ## * # # $ # #
|
||||||
|
# # * # # # #
|
||||||
|
## # ## # # ### #
|
||||||
|
# ## # #. $ .## ##
|
||||||
|
# #.# ## ## #.# ##
|
||||||
|
# # $ #. $ .$ ##
|
||||||
|
# #* $.# . ##
|
||||||
|
##### ## ## # ##
|
||||||
|
# # $ # #
|
||||||
|
# # # ##
|
||||||
|
# #$## #
|
||||||
|
## ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
####
|
||||||
|
# ####
|
||||||
|
# $ #########
|
||||||
|
# .# $ ## #
|
||||||
|
# $# .## $ ##
|
||||||
|
#### .### #$$ #
|
||||||
|
## ## # .. # $$ #
|
||||||
|
# $ ...# $ #
|
||||||
|
# $ #####... # ##
|
||||||
|
# $# # .**@####
|
||||||
|
### # # # #
|
||||||
|
##### #### # #
|
||||||
|
## ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
# ###
|
||||||
|
## ##
|
||||||
|
#*.$ #
|
||||||
|
# .$.$ .##
|
||||||
|
# $.$.$ #
|
||||||
|
# $.@.$ #
|
||||||
|
# $.$.$ #
|
||||||
|
##. $.$. #
|
||||||
|
# $.*#
|
||||||
|
## ##
|
||||||
|
### #
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# # # #
|
||||||
|
# # #
|
||||||
|
#####.# ...#####
|
||||||
|
# .$$ ###$# #
|
||||||
|
# #.# $. # #
|
||||||
|
# .# $$$ # #
|
||||||
|
### # $@$ # ###
|
||||||
|
# # $$$ #. #
|
||||||
|
# # .$ #.# #
|
||||||
|
# #$### $$. #
|
||||||
|
#####... #.#####
|
||||||
|
# # #
|
||||||
|
# # # #
|
||||||
|
##### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
#######
|
||||||
|
# ###
|
||||||
|
# ###$ ##
|
||||||
|
#....$ #
|
||||||
|
### ## # #
|
||||||
|
###@.$ # # ##
|
||||||
|
# .*.$ ## #
|
||||||
|
# $.$ #.$$#
|
||||||
|
# ## ## #
|
||||||
|
##### # ###
|
||||||
|
### $ #
|
||||||
|
## #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# $$# #####
|
||||||
|
# . $ # #####
|
||||||
|
### ## . $ # #####
|
||||||
|
# ##.### ....$ # #####
|
||||||
|
# $$# ###.##. # $ # #
|
||||||
|
# # $ # .##.### .$$ #
|
||||||
|
### ## .$$$# ###.## #
|
||||||
|
# ##.### #$$$. ## ###
|
||||||
|
# $$. ###.##. # $ # #
|
||||||
|
# # $ # .##.### #$$ #
|
||||||
|
##### # $.... ###.## #
|
||||||
|
##### # $ . ## ###
|
||||||
|
##### # $ . #
|
||||||
|
##### #$$ #
|
||||||
|
##### @#
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
#############
|
||||||
|
# #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$@$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$@$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
#####################
|
||||||
|
## # # #
|
||||||
|
# $ $ $ #$ $ $ $ $###
|
||||||
|
# $##### $$ $## ## $ #
|
||||||
|
# # ..# # # # #
|
||||||
|
##$ ... # # ...#$ ##
|
||||||
|
## $ ... #$ # ...$ ##
|
||||||
|
# $####..# ##...##$ #
|
||||||
|
# *.*..$$@$$..*.* #
|
||||||
|
# $##...## #..####$ #
|
||||||
|
## $... # $# ... $ ##
|
||||||
|
## $#... # # ... $##
|
||||||
|
# # # # #.. # #
|
||||||
|
# $ ## ##$ $$ #####$ #
|
||||||
|
###$ $ $ $ $# $ $ $ #
|
||||||
|
# # # ##
|
||||||
|
#####################
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# # # #
|
||||||
|
# #.####.# #
|
||||||
|
# .. .. #
|
||||||
|
##### ### #### ###
|
||||||
|
# # # # #
|
||||||
|
# # ## # #@## #
|
||||||
|
# $ ## # # # ###
|
||||||
|
## $ ## # $ $.. #
|
||||||
|
## $ ### # #.# #
|
||||||
|
## $ ## ## # #
|
||||||
|
## $ # # #####
|
||||||
|
## $ $ ##
|
||||||
|
##### ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
#########
|
||||||
|
#### # #
|
||||||
|
#### # # $ #
|
||||||
|
# # ####.# #
|
||||||
|
# $ $ .#### #
|
||||||
|
# $#$## #.#....#
|
||||||
|
### # $ # #.#....#
|
||||||
|
# $ $ # #..*....#
|
||||||
|
# # ## $ # #### #
|
||||||
|
# $ # # $# ##
|
||||||
|
## $ # ######
|
||||||
|
## $ # $$$#
|
||||||
|
## $$@## #
|
||||||
|
## ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
#############
|
||||||
|
# # #
|
||||||
|
# $ $ $ $ $ #
|
||||||
|
### ##### ###
|
||||||
|
####.$ $ $.####
|
||||||
|
# ...# $ # $ #... #
|
||||||
|
# $##*#.#.#*##$ #
|
||||||
|
## . . @ . . ##
|
||||||
|
# $##*#.#.#*##$ #
|
||||||
|
# ...# $ # $ #... #
|
||||||
|
####.$ $ $.####
|
||||||
|
### ##### ###
|
||||||
|
# $ $ $ $ $ #
|
||||||
|
# # #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
##########
|
||||||
|
## #
|
||||||
|
## ### #######
|
||||||
|
# $$ # $# # #
|
||||||
|
# ### #$$ #
|
||||||
|
# $$ # #$$#
|
||||||
|
# # #### #$ #
|
||||||
|
## # ###.*. # ## #
|
||||||
|
## *.*.#..*.## ###
|
||||||
|
# ***...**.### $$ #
|
||||||
|
# #....#...# # # #
|
||||||
|
# ## ##.*. $ # ### #
|
||||||
|
## # $ ..## $ # #
|
||||||
|
## # $$### $#$$ # #
|
||||||
|
# @ # $ # #
|
||||||
|
##### ##$#### ##
|
||||||
|
###### ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
############## #######
|
||||||
|
# # #
|
||||||
|
#.########## #$##### #
|
||||||
|
# # # #
|
||||||
|
#*######## # ###### # #
|
||||||
|
# # # # #
|
||||||
|
#*###### # ####### # # #
|
||||||
|
# # # # # #
|
||||||
|
#*#### # ######## # # # #
|
||||||
|
# # # # # # #
|
||||||
|
#*## # ######### # # # # #
|
||||||
|
# # # # # # # #
|
||||||
|
#$ # ########## # # # # # #
|
||||||
|
# # # # # # # # #
|
||||||
|
# # ########### # # # # # # #
|
||||||
|
#. @ $ * * * * * . #
|
||||||
|
##############################
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
####
|
||||||
|
####### #
|
||||||
|
# $ ##
|
||||||
|
######## # ..## $ #
|
||||||
|
## ##.# # #
|
||||||
|
####### #.# $ $###
|
||||||
|
### #######.# # ##
|
||||||
|
# ## # $. $$ #
|
||||||
|
# ## #.# #@# #.# ## #
|
||||||
|
# $$ .$ # ## #
|
||||||
|
## # #.####### ###
|
||||||
|
###$ $ #.# #######
|
||||||
|
# # #.## ##
|
||||||
|
# $ ##.. # ########
|
||||||
|
## $ #
|
||||||
|
# #######
|
||||||
|
####
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
######
|
||||||
|
## ###########
|
||||||
|
# $ $ $ # * ######
|
||||||
|
# .*.#..*.# .$ ##
|
||||||
|
# * # $ $ * $#*.$ #
|
||||||
|
## #### # . # * #
|
||||||
|
# $ #########.## .$ #
|
||||||
|
#.*.. * #### ##
|
||||||
|
#$ $ #$#.$$.*# # #
|
||||||
|
# # #*.$$.#$# $ $#
|
||||||
|
## #### * ..*.#
|
||||||
|
# $. ##.######### $ #
|
||||||
|
# * # . # #### ##
|
||||||
|
# $.*#$ * $ $ # .$ #
|
||||||
|
## $. #.*..# * @#
|
||||||
|
###### * # $ *.$ #
|
||||||
|
########### ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
###### #######
|
||||||
|
# ..# # # #
|
||||||
|
# ..###### $# #
|
||||||
|
## #. $ ## $ #
|
||||||
|
# $$$ # ##$##
|
||||||
|
#.#. #$ $ # #
|
||||||
|
#.#.## ## $ #
|
||||||
|
#.# $ # # #
|
||||||
|
#. ## @# ##$#
|
||||||
|
#. #### #
|
||||||
|
#. $ $# #
|
||||||
|
#. ######## #
|
||||||
|
#### #####
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
################
|
||||||
|
# # ## # #
|
||||||
|
# .$. $ # . . #
|
||||||
|
## ### # $ #$ #
|
||||||
|
# . # ### ##.##
|
||||||
|
# $ .$ #. # #
|
||||||
|
### ## # $ $ #
|
||||||
|
## # ### ## #
|
||||||
|
# ## ### # ##
|
||||||
|
# $ $ # ## ###
|
||||||
|
# # .# $. $ #
|
||||||
|
##.## ### # . #
|
||||||
|
# $# $ # ### ##
|
||||||
|
# . . #@ $ .$. #
|
||||||
|
# # ## # #
|
||||||
|
################
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
##########
|
||||||
|
# # #
|
||||||
|
# $ # # #### #####
|
||||||
|
### $$ ####### #### #
|
||||||
|
## $ $ ### ## $ #
|
||||||
|
# $ ### # # ## ##### ###
|
||||||
|
# #$# ..### ## # #
|
||||||
|
# # #.# #.. # # $ $ #
|
||||||
|
### $ $ #.# #.. # # ## ##
|
||||||
|
# # #.# #### #### ## #
|
||||||
|
########.# # $ $ #
|
||||||
|
# .. #.# ###### # # #
|
||||||
|
#.$$$$.#.# # # #### ####
|
||||||
|
#.$ @$.#.# # # # $ #
|
||||||
|
#.$$$$.#.# # # #### #
|
||||||
|
# .. . # #### #####
|
||||||
|
############
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
#####
|
||||||
|
####### # #####
|
||||||
|
###### #.### #
|
||||||
|
## # ### #. * #
|
||||||
|
# ###### ## # ### ##
|
||||||
|
# ## $ ..$ # $ ## #
|
||||||
|
# # $ *.$@##### # ##
|
||||||
|
# # ..$ # $ # ##
|
||||||
|
#####$#######$## # . #
|
||||||
|
# $ . #### ####
|
||||||
|
# $$# #########$## . #
|
||||||
|
# # . .# . # $$*$$ #
|
||||||
|
# . # $.$.# #... ...#
|
||||||
|
##### $ # ## ##### $$*$$ #
|
||||||
|
#.# # . #
|
||||||
|
######################
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
####
|
||||||
|
##### ##########
|
||||||
|
# # # #
|
||||||
|
# # .. ## $###
|
||||||
|
# # ##.#. # $$$@ #
|
||||||
|
# #. # $ # #
|
||||||
|
# ######## $ # #
|
||||||
|
### $ ## #
|
||||||
|
#.############ #
|
||||||
|
#. ##
|
||||||
|
################
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
#####
|
||||||
|
## # ####
|
||||||
|
# ### #
|
||||||
|
# # @# #
|
||||||
|
##$#### ######
|
||||||
|
# ... ## ##
|
||||||
|
# ... # ## #
|
||||||
|
#### # ##### # ##
|
||||||
|
# # $# #
|
||||||
|
# # $ $ $$ # #
|
||||||
|
# ##### # #
|
||||||
|
## # # #
|
||||||
|
###### ### #
|
||||||
|
## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
#
|
||||||
|
## ##
|
||||||
|
# #
|
||||||
|
# .$. #
|
||||||
|
## $.$ ##
|
||||||
|
# .$.$.$. #
|
||||||
|
# $.$+$.$ #
|
||||||
|
# .$.$.$. #
|
||||||
|
## $.$$ ##
|
||||||
|
# .$. #
|
||||||
|
# # # #
|
||||||
|
## ## #
|
||||||
|
# ###
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
#####
|
||||||
|
# ##
|
||||||
|
# $ #####
|
||||||
|
## $ # #
|
||||||
|
## $ # $###########
|
||||||
|
## $ $ $ $ #
|
||||||
|
#####$ # # # # #
|
||||||
|
# # #
|
||||||
|
# #######$#######
|
||||||
|
## #@# #
|
||||||
|
# # # ## # #
|
||||||
|
#..*.*.*...... #
|
||||||
|
########## # ##
|
||||||
|
#### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# #### #
|
||||||
|
## #$.*.$ # #
|
||||||
|
# $.@.$ #
|
||||||
|
# # $.*.$# ##
|
||||||
|
# #### #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
#####
|
||||||
|
########## #
|
||||||
|
# $ $$$ #
|
||||||
|
# $## # # # #
|
||||||
|
# $ # # # #
|
||||||
|
##$## .#. #
|
||||||
|
# ..... # #
|
||||||
|
#$ ##.@.## $#
|
||||||
|
# # ..... #
|
||||||
|
# .#. ##$##
|
||||||
|
# # # # $ #
|
||||||
|
# # # # ##$ #
|
||||||
|
# $$$ $ #
|
||||||
|
# ##########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
####### #######
|
||||||
|
## . ### ##
|
||||||
|
# $$.$$ # .$.$. #
|
||||||
|
# $ . $ # $.$.$ #
|
||||||
|
#...#... .$@$. #
|
||||||
|
# $ . $ # $.$.$ #
|
||||||
|
# $$.$$ # .$.$. #
|
||||||
|
## . ### ##
|
||||||
|
### ### ### ###
|
||||||
|
## ### ##
|
||||||
|
# .$.$. # .$$$. #
|
||||||
|
# $.$.$ # $...$ #
|
||||||
|
# .$ $. $.#.$ #
|
||||||
|
# $.$.$ # $...$ #
|
||||||
|
# .$.$. # .$$$. #
|
||||||
|
## ### ##
|
||||||
|
####### #######
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
#####
|
||||||
|
##### #####
|
||||||
|
##### # $ # #####
|
||||||
|
##### # $$ $$ # #####
|
||||||
|
# #$$ . ##$## . $$# #
|
||||||
|
# $$. ##### . ##### .$$ #
|
||||||
|
# ##### ##.## ##### #
|
||||||
|
##$ # #.... . ....# # $##
|
||||||
|
# . $ . # @ # . $ . #
|
||||||
|
##$ # #.... . ....# # $##
|
||||||
|
# ##### ##.## ##### #
|
||||||
|
# $$. ##### . ##### .$$ #
|
||||||
|
# #$$ . ##$## . $$# #
|
||||||
|
##### # $$ $$ # #####
|
||||||
|
##### # $ # #####
|
||||||
|
##### #####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# ################### #
|
||||||
|
# # $ $ $ $ $ $ $ $ $ $ # #
|
||||||
|
# $ # # # # $ #
|
||||||
|
## #.###.#.###.#.###.# ##
|
||||||
|
#$ # . # * # . # $#
|
||||||
|
# . # . # . # . #
|
||||||
|
#$###.#.###.@.###.#.###$#
|
||||||
|
# . # . # . # . #
|
||||||
|
#$ # . # * # . # $#
|
||||||
|
## #.###.#.###.#.###.# ##
|
||||||
|
# $ # # # # $ #
|
||||||
|
# # $ $ $ $ $ $ $ $ $ $ # #
|
||||||
|
# ################### #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
#################
|
||||||
|
# #
|
||||||
|
##$#.#.#.#.#.#.#$##
|
||||||
|
# $.$.$.$.$.$.$ #
|
||||||
|
# #$#$ $@$ $#$# #
|
||||||
|
# $.$.$.$.$.$.$ #
|
||||||
|
##$#.#.#.#.#.#.#$##
|
||||||
|
# #
|
||||||
|
#################
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
#####
|
||||||
|
############### ########
|
||||||
|
## $ $ $ $ $ $ $ $ $ $ ##
|
||||||
|
### # # ###
|
||||||
|
# #.##.#.##.#.##.#.##.#.## #
|
||||||
|
# $# .$ $ $# .$ $ $# .$ #
|
||||||
|
# . #$ $ $. #$ $ $. # #
|
||||||
|
# $##.#.##.#.##.#.##.#.##.#$ #
|
||||||
|
## . # @ . # ##
|
||||||
|
## # . # . ##
|
||||||
|
# $#.##.#.##.#.##.#.##.#.##$ #
|
||||||
|
# # .$ $ $# .$ $ $# . #
|
||||||
|
# $. #$ $ $. #$ $ $. #$ #
|
||||||
|
# ##.#.##.#.##.#.##.#.##.# #
|
||||||
|
### # # ###
|
||||||
|
## $ $ $ $ $ $ $ $ $ $ ##
|
||||||
|
######## ###############
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
###########
|
||||||
|
## # ##
|
||||||
|
# $$*.$.*$$ #
|
||||||
|
#... ...#
|
||||||
|
# $$*.$.*$$ #
|
||||||
|
## * ##
|
||||||
|
# $$*.$.*$$ #
|
||||||
|
#... @ ...#
|
||||||
|
# $$*.$.*$$ #
|
||||||
|
## # ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
###########
|
||||||
|
# #
|
||||||
|
# $## ### ## #####
|
||||||
|
# # $ $ $ ##### ###
|
||||||
|
# $ # # $. . #
|
||||||
|
# ##$###$## # #...# #
|
||||||
|
# $ # # #. .# ##
|
||||||
|
## # $ $ $## # #...# #
|
||||||
|
# ## ### #. # #. . # #
|
||||||
|
# $ # # # #
|
||||||
|
# @######## ### # #
|
||||||
|
#### # ### #
|
||||||
|
# #### # ##
|
||||||
|
# ## ###
|
||||||
|
##### ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
#######
|
||||||
|
######## #. #
|
||||||
|
# $ * #####
|
||||||
|
# ## ## #. # # ####
|
||||||
|
### # $ $$#$#. # # ######## #
|
||||||
|
# $# # $ * #...... #
|
||||||
|
# $ ### $#. # #### #
|
||||||
|
## # #$$ # $ .# # # ## #
|
||||||
|
# # $ @## # ## ## ##
|
||||||
|
# ## $$$ # ## ### #####
|
||||||
|
## #.##.### #
|
||||||
|
## #*$.*... ## #
|
||||||
|
# # ## ## ##
|
||||||
|
### ###########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
#######
|
||||||
|
# @ #
|
||||||
|
###### ### ######
|
||||||
|
# # $ # #
|
||||||
|
# $ # $ #
|
||||||
|
##$###*###*###$##
|
||||||
|
# $ # $ #
|
||||||
|
# # * # #
|
||||||
|
##$###*###*###$##
|
||||||
|
# # $ # #
|
||||||
|
# ..*...#...*.. #
|
||||||
|
###### ### ######
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
####
|
||||||
|
#### .#
|
||||||
|
#### # .####
|
||||||
|
### #### ##.. ##
|
||||||
|
# $ # #$ #... #
|
||||||
|
# # # # #... #
|
||||||
|
# #$ # $ $ # #
|
||||||
|
#### $ # # @##
|
||||||
|
# # #$$##### ##
|
||||||
|
# $ $ # # #####
|
||||||
|
###### # #
|
||||||
|
#### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# ### #
|
||||||
|
#### $ $ #######
|
||||||
|
# $ #$ ## ####
|
||||||
|
# ### ### # #
|
||||||
|
## $ ###### # #
|
||||||
|
# $ # ## ##### #
|
||||||
|
# # # # # $$ # ## ###
|
||||||
|
# # #$.## $ #
|
||||||
|
# ###### $ # ### ##
|
||||||
|
#....*.**.# # # # ##
|
||||||
|
#### # ##### #####
|
||||||
|
##$## ###$#
|
||||||
|
## # $ #
|
||||||
|
####### # $ #############
|
||||||
|
# $ ###### ## @ #
|
||||||
|
# ......... #
|
||||||
|
##############################
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
#####
|
||||||
|
# . #
|
||||||
|
##### . #####
|
||||||
|
# $ . $ #
|
||||||
|
# $ ##.## $ #
|
||||||
|
# # $ # #
|
||||||
|
###$## ##$###
|
||||||
|
# # *** # #
|
||||||
|
#....$ *@* $....#
|
||||||
|
# # *** # #
|
||||||
|
###$## ##$###
|
||||||
|
# # $ # #
|
||||||
|
# $ ##.## $ #
|
||||||
|
# $ . $ #
|
||||||
|
##### . #####
|
||||||
|
# . #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
## ##
|
||||||
|
# $.$ #
|
||||||
|
# . . #
|
||||||
|
## $.$.$.$ ##
|
||||||
|
# . # # . #
|
||||||
|
# $.$# $ #$.$ #
|
||||||
|
# . . $@$ . . #
|
||||||
|
# $.$# $ #$.$ #
|
||||||
|
# . # # . #
|
||||||
|
## $.$.$.$ ##
|
||||||
|
# . . #
|
||||||
|
# $.$ #
|
||||||
|
## ##
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
####
|
||||||
|
# ######
|
||||||
|
# $ $ ### ####
|
||||||
|
# $ # ## #
|
||||||
|
#####*#*#$$$ # ## $ #
|
||||||
|
# $ $ $ # ## #
|
||||||
|
# #$ $ $##### $$ ##
|
||||||
|
## # #### .....# ##
|
||||||
|
# # $ **.## ###
|
||||||
|
# # # $$ #.##. #
|
||||||
|
## # #.#+* # #
|
||||||
|
# ######.##..$ #
|
||||||
|
####### # $..##.####
|
||||||
|
# # *..*.#
|
||||||
|
# .#. #
|
||||||
|
######$# #
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
#############################
|
||||||
|
#. . . . . .#
|
||||||
|
# ## # # # # # # # ## #
|
||||||
|
# ## $ # $ # $ # $ # $ ## #
|
||||||
|
# ##$$$#$$$#$$$#$$$#$$$## #
|
||||||
|
# $...$...$...$...$...$ #
|
||||||
|
# $$.#.$.#.$.#.$.#.$.#.$$ #
|
||||||
|
# $...$...$...$...$...$ #
|
||||||
|
#.###$$$#$$$#$@$#$$$#$$$###.#
|
||||||
|
# $...$...$...$...$...$ #
|
||||||
|
# $$.#.$.#.$.#.$.#.$.#.$$ #
|
||||||
|
# $...$...$...$...$...$ #
|
||||||
|
# ##$$$#$$$#$$$#$$$#$$$## #
|
||||||
|
# ## $ # $ # $ # $ # $ ## #
|
||||||
|
# ## # # # # # # # ## #
|
||||||
|
#. . . . . .#
|
||||||
|
#############################
|
849
maps_suites/Sasquatch_50.xsb
Normal file
849
maps_suites/Sasquatch_50.xsb
Normal file
|
@ -0,0 +1,849 @@
|
||||||
|
; Sasquatch (50 puzzles, released January, 1999)
|
||||||
|
; This is my first set. Scott Lindhurst describes them as generally of just the right
|
||||||
|
; difficulty to be fun: not too easy, but (usually) not so hard that you get frustrated.
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
###
|
||||||
|
## # ####
|
||||||
|
## ### #
|
||||||
|
## $ #
|
||||||
|
# @$ # #
|
||||||
|
### $### #
|
||||||
|
# #.. #
|
||||||
|
## ##.# ##
|
||||||
|
# ##
|
||||||
|
# ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
## #####
|
||||||
|
## ## . #
|
||||||
|
# ## $. #
|
||||||
|
## $ #
|
||||||
|
## $@ ###
|
||||||
|
# $ ##
|
||||||
|
#.. ## ##
|
||||||
|
# # ##
|
||||||
|
##### #
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
#####
|
||||||
|
## #
|
||||||
|
# #
|
||||||
|
#### # $ ##
|
||||||
|
# ####$ $#
|
||||||
|
# $ $ #
|
||||||
|
## ## $ $ $#
|
||||||
|
# .# $ $ #
|
||||||
|
# .# #
|
||||||
|
##### #########
|
||||||
|
#.... @ #
|
||||||
|
#.... #
|
||||||
|
## ######
|
||||||
|
####
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
###########
|
||||||
|
## # @#
|
||||||
|
### $ $$# #
|
||||||
|
# ##$ $$ #
|
||||||
|
# # $ # #
|
||||||
|
###### ######
|
||||||
|
#.. ..$ #*##
|
||||||
|
# .. ###
|
||||||
|
# ..#####
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
###########
|
||||||
|
## # ##
|
||||||
|
### $ $#$ $ ###
|
||||||
|
# #$ $ # $ $# #
|
||||||
|
# $ ..#.. $ #
|
||||||
|
# $...#...$ #
|
||||||
|
# $ .. * .. $ #
|
||||||
|
###### @ ######
|
||||||
|
# $ .. .. $ #
|
||||||
|
# $...#...$ #
|
||||||
|
# $ ..#.. $ #
|
||||||
|
# #$ $ # $ $# #
|
||||||
|
### $ $#$ $ ###
|
||||||
|
## # ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
###########
|
||||||
|
###. .$. .###
|
||||||
|
## $ $ $ ##
|
||||||
|
## ..$.. ##
|
||||||
|
##$#$#$##
|
||||||
|
#.$ $.#
|
||||||
|
# @ #
|
||||||
|
### ###
|
||||||
|
## $ $ ##
|
||||||
|
#. $ .#
|
||||||
|
### . ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
######
|
||||||
|
#### ## #
|
||||||
|
### # # ## ###
|
||||||
|
### #### # $ #
|
||||||
|
# $ @ ...*.. $ #
|
||||||
|
# $ $ ## ### ###
|
||||||
|
### ### # #####
|
||||||
|
# ###
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
#######
|
||||||
|
# ##
|
||||||
|
##### ### ##
|
||||||
|
# # ##
|
||||||
|
#@$***. ##$ #
|
||||||
|
# # ## .#
|
||||||
|
## ## # $ #
|
||||||
|
## ####.$.#
|
||||||
|
## #
|
||||||
|
###### ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
#########
|
||||||
|
#. . #
|
||||||
|
#.$. . #
|
||||||
|
## ###@ #
|
||||||
|
# $ ##
|
||||||
|
# $$ ##
|
||||||
|
# $ #
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
# @ ###
|
||||||
|
#### # #
|
||||||
|
# ####..#.#$#####
|
||||||
|
# $ $ ##... #
|
||||||
|
# .....#$$ #
|
||||||
|
###### ##$## #####
|
||||||
|
# $ #
|
||||||
|
#### ####
|
||||||
|
# #
|
||||||
|
# #####
|
||||||
|
### $ #
|
||||||
|
# $ $ #
|
||||||
|
# #$# ####
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
####
|
||||||
|
### ####
|
||||||
|
# @ ##
|
||||||
|
# #. .#.###
|
||||||
|
# $$$ $$$ #
|
||||||
|
###.#.#.# #
|
||||||
|
## #
|
||||||
|
#### ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
##### # #######
|
||||||
|
# ##### # ..... #
|
||||||
|
##### # ## # # # # #
|
||||||
|
# $ $ $ $ $ # ## ## $ #
|
||||||
|
# # ##......#### ### $$ ###
|
||||||
|
# ## * # # # $$ #
|
||||||
|
##########+$$ ## # #
|
||||||
|
#.$ $# # ########
|
||||||
|
#.## #
|
||||||
|
########
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
#######
|
||||||
|
### ##
|
||||||
|
# ### #
|
||||||
|
# # #
|
||||||
|
###$#@ # #
|
||||||
|
# ##### #
|
||||||
|
# # *. #
|
||||||
|
##$$# *.##
|
||||||
|
# *..#
|
||||||
|
#### #...##
|
||||||
|
# #$$$ #
|
||||||
|
# $ #
|
||||||
|
##### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
#######
|
||||||
|
## # #
|
||||||
|
# *.$.#
|
||||||
|
# *.#.###
|
||||||
|
# #$@$$ #
|
||||||
|
# ## # #
|
||||||
|
###### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
####
|
||||||
|
#@ #
|
||||||
|
## ##
|
||||||
|
# .$#####
|
||||||
|
#$. # #
|
||||||
|
###..$# # #
|
||||||
|
# ..$ $ #
|
||||||
|
# $ $ # ###
|
||||||
|
##### # #
|
||||||
|
# #
|
||||||
|
###.#
|
||||||
|
###
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
######
|
||||||
|
## # ###
|
||||||
|
## # # ##
|
||||||
|
# # $.# #
|
||||||
|
## $ $.# #
|
||||||
|
# #####. ##
|
||||||
|
# $. @#
|
||||||
|
# $. ####
|
||||||
|
### # #*# # ###
|
||||||
|
#### .$ #
|
||||||
|
# .$ #
|
||||||
|
## .##### #
|
||||||
|
# #.$ $ ##
|
||||||
|
# #.$ # #
|
||||||
|
## # # ##
|
||||||
|
### # ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
###########
|
||||||
|
## . . . . ###
|
||||||
|
# $$ $ $ $ #
|
||||||
|
# ######## # #####
|
||||||
|
#### ## $ # # #
|
||||||
|
# # $ $ # ### # #
|
||||||
|
## # # #### $ #
|
||||||
|
#... ##### $ #### ###
|
||||||
|
#... @ $ # #
|
||||||
|
#...############ $ $ #
|
||||||
|
##### ##### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
####
|
||||||
|
##### #
|
||||||
|
# #
|
||||||
|
#$ $ $ #
|
||||||
|
#.*.*.*#
|
||||||
|
#*.*.*.#
|
||||||
|
# $ $ $#
|
||||||
|
#......#
|
||||||
|
#.*.*.*#
|
||||||
|
#$ $ $ #
|
||||||
|
# $ $ $#
|
||||||
|
#$ $ $ #
|
||||||
|
# #
|
||||||
|
#@ #####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #######
|
||||||
|
# $ ##
|
||||||
|
## ###### ##
|
||||||
|
# # # # ########
|
||||||
|
# # ## $ ##
|
||||||
|
# #. #@###### $ ##
|
||||||
|
# #.# ### ## $ ##
|
||||||
|
# #. # ## $ ##
|
||||||
|
# #.# # ## ## $ ##
|
||||||
|
## #.# ## ### ## $ #
|
||||||
|
# #.# # #*## ## #
|
||||||
|
# .# # # ##*## #####
|
||||||
|
###### # ######
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
######$.#
|
||||||
|
# $ $.#
|
||||||
|
# $@$...#
|
||||||
|
# $$$..##
|
||||||
|
# $ ..#
|
||||||
|
########
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
##### ########
|
||||||
|
# ### . $ #
|
||||||
|
# $ *.. #$ ##
|
||||||
|
## $# ..* $ @#
|
||||||
|
# $ . ### #
|
||||||
|
######## #####
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
##### ####
|
||||||
|
#@ .### ###
|
||||||
|
#### $$ $ #
|
||||||
|
# # . . ## #
|
||||||
|
# $ # . . ## #
|
||||||
|
## . $ $$ # #
|
||||||
|
# # ###. # #
|
||||||
|
# #### ##### #
|
||||||
|
# # #
|
||||||
|
####### # ####
|
||||||
|
# .$ #
|
||||||
|
#### #
|
||||||
|
## #####
|
||||||
|
###
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
#######
|
||||||
|
###### ######
|
||||||
|
# . ..$#$.. . #
|
||||||
|
# $ $ . $ $ #
|
||||||
|
###$####@####$###
|
||||||
|
# $ $ . $ $ #
|
||||||
|
# . ..$#$.. . #
|
||||||
|
###### ######
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
######
|
||||||
|
# ##
|
||||||
|
####### $ #
|
||||||
|
# $ $ $ #$ #
|
||||||
|
# #. $ #
|
||||||
|
####.#.# $###
|
||||||
|
# ..... #
|
||||||
|
# $ ..##$#
|
||||||
|
### ## .. #
|
||||||
|
# $.#$ # $#
|
||||||
|
# $ # #
|
||||||
|
##@ # ####
|
||||||
|
## ####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
#####
|
||||||
|
##### #####
|
||||||
|
# .#$ $ #
|
||||||
|
# #. $$$ @ ##
|
||||||
|
# .#$ $ #
|
||||||
|
###.# $ $ #
|
||||||
|
#. ##$ ###
|
||||||
|
#######*###.$ #
|
||||||
|
# $ ....####
|
||||||
|
## #$#$$....#
|
||||||
|
# $ $ #..#
|
||||||
|
# $ #..#
|
||||||
|
# ##########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
####
|
||||||
|
########### #
|
||||||
|
# $ $ $ $ ##
|
||||||
|
# # # # # #$##
|
||||||
|
##. . . . . .#
|
||||||
|
#$# # # # #$####
|
||||||
|
###. . . . . . #
|
||||||
|
###$# # # # # @ #
|
||||||
|
# $ $ $ $ ###
|
||||||
|
# ###########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
########
|
||||||
|
###### ##########
|
||||||
|
## $ ### ##
|
||||||
|
# $ $ ## # ######### #
|
||||||
|
# $ # # #
|
||||||
|
# $ $ # # ######### # #
|
||||||
|
# $ # # #. . . . # #
|
||||||
|
# $ $ # # . . . .## #
|
||||||
|
# $ # # # . . . . # #
|
||||||
|
##$ $## # #### # # ##
|
||||||
|
# #@ # # ####
|
||||||
|
###### ##### # #
|
||||||
|
## # # #
|
||||||
|
##### ## ##
|
||||||
|
## ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
######
|
||||||
|
# ###
|
||||||
|
##### $ $ #
|
||||||
|
#### #.# ##
|
||||||
|
# $ #$#.##$#####
|
||||||
|
# $$. .#.$ ##
|
||||||
|
# $.#.#.##### ####
|
||||||
|
## ....... @# #
|
||||||
|
####$ #.### #$###$##
|
||||||
|
## $ . # $ $ $ #
|
||||||
|
# $ ### #
|
||||||
|
# # ############
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
####
|
||||||
|
# # ####
|
||||||
|
# ######## ####### #
|
||||||
|
# ### ## $ #
|
||||||
|
##.###### ... #. #
|
||||||
|
#.# # .# # $ #
|
||||||
|
#$$$$#$$$ #.# ##. #
|
||||||
|
#.# $ $ #.. ##
|
||||||
|
#.# $ $ # # ##
|
||||||
|
# # $$ # #####
|
||||||
|
#. ##$ ######
|
||||||
|
#. # $. #
|
||||||
|
##. @ ###.#$ #
|
||||||
|
# # # #
|
||||||
|
# ## ######
|
||||||
|
######
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
# # ######
|
||||||
|
### ## ##### # ###
|
||||||
|
# # ## #$$ #
|
||||||
|
##$ ########## $ $ #
|
||||||
|
### ## ..........$ #$$@#
|
||||||
|
# # $$# ####### $ #
|
||||||
|
# $ #...# ### ####
|
||||||
|
# # $ ### ## ####
|
||||||
|
######## #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# $$# ######
|
||||||
|
###. . $ # #
|
||||||
|
# .##.####### #
|
||||||
|
# $. . # # #
|
||||||
|
##.##$$$$#$$$ ######
|
||||||
|
#... . # #
|
||||||
|
#..##.####.### ##@#
|
||||||
|
## # $ $ $ # $ $ #
|
||||||
|
# # # ###
|
||||||
|
# #.##.#.###### #
|
||||||
|
# $ # $. $ #
|
||||||
|
# ###.## ###$##
|
||||||
|
###### # #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
######### $ #
|
||||||
|
###### # # # #
|
||||||
|
# # # $ $ #@#
|
||||||
|
### ## #### ### ## ###
|
||||||
|
# $ $ # # #
|
||||||
|
# $ $ # #$ # $$ $$ #
|
||||||
|
###### $ # # # #
|
||||||
|
## ## ###############
|
||||||
|
# .# $ # #
|
||||||
|
#.. # ######
|
||||||
|
#...#### #
|
||||||
|
#....# ####
|
||||||
|
#....#
|
||||||
|
######
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
#######
|
||||||
|
## ##
|
||||||
|
# ### #
|
||||||
|
# ## $ ####
|
||||||
|
# # .# $.####
|
||||||
|
# # * *###.$ #
|
||||||
|
# # *# ### #####
|
||||||
|
# # @ * * # # #
|
||||||
|
# # ### #*# * #
|
||||||
|
# ## # * *.# # #######
|
||||||
|
# # # ....$ $ #
|
||||||
|
# # ## $# $####$ #
|
||||||
|
###* * # #######
|
||||||
|
# ########## ####
|
||||||
|
# #
|
||||||
|
## ############
|
||||||
|
####
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
#####
|
||||||
|
# ..########
|
||||||
|
# ......# #
|
||||||
|
#.. ##$$ $#
|
||||||
|
#####.## $ #
|
||||||
|
# ....# $ $$#
|
||||||
|
##### ## # .. .#$ $ #
|
||||||
|
# # # ##.### $$ $###
|
||||||
|
# ### # ## # $ # #
|
||||||
|
# @ #### # # # ###$ # #
|
||||||
|
# # $ $ #
|
||||||
|
# #### ### ####$$##
|
||||||
|
# ## #### # #
|
||||||
|
# # ## ###### #
|
||||||
|
#### ## # # $ #
|
||||||
|
## # # #
|
||||||
|
###### #####
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## # #####
|
||||||
|
# ## #######
|
||||||
|
# # $ ####
|
||||||
|
# #### $ $$ # #
|
||||||
|
##### # $$$ $ #$ #
|
||||||
|
# $ $ $ $ ######
|
||||||
|
###$ #$ $ $ #
|
||||||
|
# $ $$ ### @ ##
|
||||||
|
# $ $$$$####... #
|
||||||
|
# $ $ #. .#...#
|
||||||
|
### $$$$ ...... #
|
||||||
|
# ##..#.....#
|
||||||
|
###### ##.....####
|
||||||
|
# .....# #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### # ######
|
||||||
|
# # # $ $ #
|
||||||
|
# #### # $##$ ###
|
||||||
|
# ######### # $ $ #
|
||||||
|
# ..........# $ #
|
||||||
|
###### ##....@### # $$ #
|
||||||
|
# # #####.## # ## $ #
|
||||||
|
# # #$ $$ $ #
|
||||||
|
#### # ##### # # $ # #
|
||||||
|
# # # # ### ####
|
||||||
|
# # # # #####
|
||||||
|
# # #####
|
||||||
|
##### #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
##### #########
|
||||||
|
# # # #
|
||||||
|
### #$### ##### # # # #####
|
||||||
|
# $. . # # . . . . #
|
||||||
|
# # # #$### # # # # # # #$#
|
||||||
|
# . . . . $ $ $ $ . . #
|
||||||
|
###$# # #$###########$# #$#
|
||||||
|
# . . ## # . #
|
||||||
|
###$# #$####### # #$# #$###
|
||||||
|
# . .$ $ $ # # . . #
|
||||||
|
#$# # # # # #####$# # # #
|
||||||
|
# . . . . . $ . . . #
|
||||||
|
### # # # # # # # # # # #
|
||||||
|
# $ $. . .$ $ $ $ $ $ #
|
||||||
|
##### # # #############
|
||||||
|
# @ #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
####
|
||||||
|
#### ######## #
|
||||||
|
###@ ## # # #
|
||||||
|
# # # ### $ $ #
|
||||||
|
# ....########## # #..#
|
||||||
|
# . # ## $ $ $# # #..#
|
||||||
|
### # $ $$$ # # $ $ #
|
||||||
|
# ...# $ $$ # # # #
|
||||||
|
# ..# $ $ $ # # ## #
|
||||||
|
##...# $ $$ $ #$# #####
|
||||||
|
# ## $ $ $ # #
|
||||||
|
### ###### ### # ###
|
||||||
|
# . ## #### . . #
|
||||||
|
## . # # #.#.# #
|
||||||
|
# . # # # # # #
|
||||||
|
# . #### #########
|
||||||
|
# ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
#### #####
|
||||||
|
# ####### #### #
|
||||||
|
# @ $ #### $ #
|
||||||
|
# ###.# # $$ #
|
||||||
|
###.## $ #$ # # ##
|
||||||
|
# ..# $ ...# ### ##
|
||||||
|
# $ ...$##.## ##
|
||||||
|
##.###$ $.. $$ ##
|
||||||
|
#. #. .### $ $ #
|
||||||
|
# $...## ## # #
|
||||||
|
## ###### # ##
|
||||||
|
## ## #####
|
||||||
|
# $$ #
|
||||||
|
# $ #
|
||||||
|
### $ #
|
||||||
|
# ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
#######
|
||||||
|
#### # #
|
||||||
|
# ### $$$ #
|
||||||
|
# ....$ #####
|
||||||
|
# ..# $ # @#
|
||||||
|
###$##$#### # ######
|
||||||
|
#.*....$ $ ### #####
|
||||||
|
# ..##### ## $ $ #
|
||||||
|
#....*.... # $$ # $ #
|
||||||
|
########## #$$ ## # #
|
||||||
|
# $.### $ ##
|
||||||
|
# $###$# # #
|
||||||
|
##### $ $ ####
|
||||||
|
#### ####
|
||||||
|
######
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
### ########
|
||||||
|
## *** # # #
|
||||||
|
# * * ## # #####
|
||||||
|
## *** ## # ## ##
|
||||||
|
### #### # # # #
|
||||||
|
# # # # ####$ $###
|
||||||
|
## ## # ## $...$ ##
|
||||||
|
##### # ## .@. #
|
||||||
|
# # # $...$ ##
|
||||||
|
########$ $###
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
####
|
||||||
|
# ######
|
||||||
|
# ####
|
||||||
|
# $ $ # #####
|
||||||
|
##### ### $ #
|
||||||
|
# # $ # #
|
||||||
|
# ##$######
|
||||||
|
# $### # ...# #
|
||||||
|
## #@#$ ##.#.# #
|
||||||
|
# # #...# #
|
||||||
|
# $ ##$ $#...#####
|
||||||
|
### ## #... #
|
||||||
|
# # $ $ $ # # #
|
||||||
|
# $### ###### # #
|
||||||
|
# # #
|
||||||
|
############# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
####
|
||||||
|
## #############
|
||||||
|
## .......... #
|
||||||
|
## # ####$### ##
|
||||||
|
# # # # ##
|
||||||
|
# # # $$$ # # #####
|
||||||
|
##### # . .# ### . . . ##
|
||||||
|
# $. .# # $$ $ $ @#
|
||||||
|
####### ### # #######
|
||||||
|
# $ $ # ## ###
|
||||||
|
# $ $ # # ## # ####
|
||||||
|
# $### #### # # # ## ####
|
||||||
|
# $ $$$ # ## # ## #
|
||||||
|
## # ## #### $$$ #
|
||||||
|
## ####### ..... #####
|
||||||
|
# $ ###### #
|
||||||
|
# ###### ## ####
|
||||||
|
##### ####
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
#############
|
||||||
|
## # ###
|
||||||
|
# $ $$$$$ #
|
||||||
|
### $ $ ### #
|
||||||
|
# $ $ $### # #
|
||||||
|
## $ ## # ###
|
||||||
|
#### #### #
|
||||||
|
### # ###
|
||||||
|
#### #### #
|
||||||
|
#@ $ ### #.# #####
|
||||||
|
# $ $ ## # .... #
|
||||||
|
# $$ ## ####..... #
|
||||||
|
## $ # #..#.## #
|
||||||
|
# $ $ ## #...... #
|
||||||
|
# $ $ # # . ..# ##
|
||||||
|
## $ # ## ##.# #
|
||||||
|
# ## # #
|
||||||
|
###### ########
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
#### ########
|
||||||
|
# ##### ## # #
|
||||||
|
# $ ### $ $ #
|
||||||
|
# $ # ## $ ####
|
||||||
|
### # # ###$## #
|
||||||
|
##### ### #### $ #
|
||||||
|
# # $ $$## .. ##$ #
|
||||||
|
# $$ # $ ##
|
||||||
|
## # $## #### # ####
|
||||||
|
### # ##$ ###..#..#
|
||||||
|
# ###.. # .....###
|
||||||
|
# # *.### # #.. #
|
||||||
|
##$$# *.##@ # # #
|
||||||
|
# *. #### ### #
|
||||||
|
###### # # #
|
||||||
|
##### ## ###
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
#### ###################
|
||||||
|
##### ### .$ #
|
||||||
|
### $. #####$#### # #
|
||||||
|
# $. #### # . ### .#
|
||||||
|
# $ $.### ## # #### # $.# $#
|
||||||
|
### $.## # # # # # # $ # #
|
||||||
|
###### # ## #$ $ ## #. # #
|
||||||
|
##### #.#. # ### # #
|
||||||
|
##### # # ### ### # #
|
||||||
|
##*## # .# # #$$* ##
|
||||||
|
#*### ### ## ## ## # .#. ##
|
||||||
|
###*# # .$ .# $.$.## ### #
|
||||||
|
##*## # #.#### # $. ##
|
||||||
|
#*### # $$ ### ### ## ##
|
||||||
|
###*# # # . $@$ #######. #
|
||||||
|
##### # ### ####.# $ #
|
||||||
|
# # ########### #
|
||||||
|
####### ####
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
#########
|
||||||
|
# # ######
|
||||||
|
# $ ###### ###
|
||||||
|
# #$#$ $ $ # $ #
|
||||||
|
# $ $@$ $ $ $ $$ #
|
||||||
|
# $ $# $ # $$$ #
|
||||||
|
# $ $ ####### #####
|
||||||
|
## ###....##### ..#
|
||||||
|
###$$# $$$$ #...* ..#
|
||||||
|
# ## #.. #
|
||||||
|
# # #$###....##*##
|
||||||
|
# ##..$. .... #
|
||||||
|
### .* .#....# #
|
||||||
|
##################
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
## # # # #######
|
||||||
|
### ###$ ## # ###
|
||||||
|
# $ $ ### #
|
||||||
|
# $ $ ###$ # # #
|
||||||
|
### ### # # # #
|
||||||
|
# $ # ## ### # ###
|
||||||
|
# $ # #@ ##
|
||||||
|
# $# # ### ### # #
|
||||||
|
# $ # # $ $ # # # #
|
||||||
|
## # $ # #. #
|
||||||
|
## # # ## #.. ###
|
||||||
|
## # # ## #... ##
|
||||||
|
### # #### #....##
|
||||||
|
# $.*.##
|
||||||
|
############..##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 49
|
||||||
|
'Parallel Logic'
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# # # # # # # # #
|
||||||
|
# $#$ # $#$ # $#$ # $#$ #
|
||||||
|
# # # # # # # # #
|
||||||
|
## # ### # ### # ### # ##
|
||||||
|
# # # # # # # # #
|
||||||
|
# # # # #
|
||||||
|
## ### # ### # ### # ### ##
|
||||||
|
# # # # # # # # #
|
||||||
|
# # # @ # # #
|
||||||
|
## # ### # ### # ### # ##
|
||||||
|
# . . . . . . . . #
|
||||||
|
#########################
|
||||||
|
|
||||||
|
; 50
|
||||||
|
'Particle Theory'
|
||||||
|
|
||||||
|
# # # # # # # # # # # #
|
||||||
|
# # # # # # # # # # # # #
|
||||||
|
# .$ . $. . $ .$ #
|
||||||
|
# $# #$# # # #$# # # # #
|
||||||
|
# . . $. . .$ . . #
|
||||||
|
# #$# # # # #$#$ $# #$# #
|
||||||
|
# . .$ .$ . $. . #
|
||||||
|
# $# # # # #@# # # # #$ #
|
||||||
|
# . .$ . $. $. . #
|
||||||
|
# #$# #$ $#$# # # # #$# #
|
||||||
|
# . . $. . .$ . . #
|
||||||
|
# # # # #$# # # #$# #$ #
|
||||||
|
# $. $ . .$ . $. #
|
||||||
|
# # # # # # # # # # # # #
|
||||||
|
# # # # # # # # # # # #
|
915
maps_suites/Sasquatch_III_50.xsb
Normal file
915
maps_suites/Sasquatch_III_50.xsb
Normal file
|
@ -0,0 +1,915 @@
|
||||||
|
; Sasquatch III (50 puzzles, released June, 2000)
|
||||||
|
; This set ranges in difficulty from medium to very hard. Thirty one of these levels explore
|
||||||
|
; some form of design symmetry. It is interesting (to me at least) to solve levels in which
|
||||||
|
; sections are reversed or rotated. Each transformation often suggests different approaches
|
||||||
|
; to the solution. However, sometimes the confusion created requires that each section be
|
||||||
|
; solved from scratch.
|
||||||
|
;
|
||||||
|
; Sometimes, I find levels in my earlier sets which I would do differently today.
|
||||||
|
; Included here are improved versions of two previous levels.
|
||||||
|
; Sasquatch III (41) = Mas Sasquatch (46)
|
||||||
|
; Sasquatch III (48) = Sasquatch (49)
|
||||||
|
;
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
#######
|
||||||
|
# * #
|
||||||
|
# @ #
|
||||||
|
##$#.##
|
||||||
|
# # #
|
||||||
|
# $#. #
|
||||||
|
# # #
|
||||||
|
## ## ##
|
||||||
|
# * * #
|
||||||
|
# * #
|
||||||
|
### ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
####
|
||||||
|
####### #
|
||||||
|
# * .##
|
||||||
|
# $$# * ##
|
||||||
|
# $@ #* * ##
|
||||||
|
## $ # * * #
|
||||||
|
### #. * * #
|
||||||
|
# . # .#
|
||||||
|
# # #####
|
||||||
|
########
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
####
|
||||||
|
######### #
|
||||||
|
# #
|
||||||
|
# #*### # #
|
||||||
|
# $ # # #
|
||||||
|
#*#*## # #
|
||||||
|
# $ # # #
|
||||||
|
# *# # # #
|
||||||
|
# $ # # # ##
|
||||||
|
###$. . . . #
|
||||||
|
#@####### #
|
||||||
|
# #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
#############
|
||||||
|
## #
|
||||||
|
## #########@###
|
||||||
|
## # * #
|
||||||
|
# ## ########*# #
|
||||||
|
# # $ $ $ $ # #
|
||||||
|
# #$.. . . ..$# #
|
||||||
|
# # .#######. # ##
|
||||||
|
# $.#######.$# #
|
||||||
|
### . . . . . # #
|
||||||
|
# $ $ $ $ $ # #
|
||||||
|
######### ## #
|
||||||
|
# $ $ #
|
||||||
|
# #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
###########
|
||||||
|
## #
|
||||||
|
# #######$##
|
||||||
|
# # $ ###
|
||||||
|
# #...***.*.@ #
|
||||||
|
# # $ # #
|
||||||
|
# #######$# #
|
||||||
|
## $ ##
|
||||||
|
######## ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
####
|
||||||
|
######### ###
|
||||||
|
# . . . . #
|
||||||
|
# $$.$# #$.$ #
|
||||||
|
## . .# #. . #
|
||||||
|
# $ $# $ $ #
|
||||||
|
# $ #* #####
|
||||||
|
##### # ##
|
||||||
|
# @ #
|
||||||
|
## # #####
|
||||||
|
##### *# $ #
|
||||||
|
# $ $ #$ $ #
|
||||||
|
# . .# #. . ##
|
||||||
|
# $.$# #$.$$ #
|
||||||
|
# . . . . #
|
||||||
|
### #########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
### # ##
|
||||||
|
# * #### #
|
||||||
|
# * ## # #
|
||||||
|
# * ** # #
|
||||||
|
# # # #
|
||||||
|
#@#** * ## #
|
||||||
|
### #$ # #
|
||||||
|
# .$ .* # #
|
||||||
|
# # # #
|
||||||
|
## # ##
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
####
|
||||||
|
########@ #
|
||||||
|
# ...#$ #
|
||||||
|
# $ $ $ * #
|
||||||
|
##### . #
|
||||||
|
##$#$. #
|
||||||
|
###. # .##
|
||||||
|
# .$#$ #
|
||||||
|
# .$ #
|
||||||
|
###.$# #
|
||||||
|
# ####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
#
|
||||||
|
###########
|
||||||
|
# # # #
|
||||||
|
# $ #$ $ #
|
||||||
|
#$.*.*.#* #
|
||||||
|
# . $. #
|
||||||
|
#$.$#. .$#
|
||||||
|
## .$ #* ##
|
||||||
|
# .#.*##. #
|
||||||
|
# $ $ $ #
|
||||||
|
### # # #####
|
||||||
|
##@ #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
#
|
||||||
|
# # #
|
||||||
|
# # ## ##
|
||||||
|
# . # # .$. #
|
||||||
|
# $.$ # .$ $. #
|
||||||
|
# * @ $ * $ #
|
||||||
|
# $.$ # .$ $. #
|
||||||
|
# . # # .$. #
|
||||||
|
# # ## ##
|
||||||
|
# # #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
## ##
|
||||||
|
# . # #
|
||||||
|
## $.$.$ ## # #
|
||||||
|
# $.$.$.$ # # . #
|
||||||
|
# .$.$.$. # $.$ #
|
||||||
|
# .$.$@$.$. * #
|
||||||
|
# .$.$.$. # $.$ #
|
||||||
|
# $.$.$.$ # # . #
|
||||||
|
## $.$.$ ## # #
|
||||||
|
# . # #
|
||||||
|
## ##
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
########
|
||||||
|
# . . #
|
||||||
|
# $.$. #
|
||||||
|
##$#$# ##
|
||||||
|
# . . #
|
||||||
|
#$#$# @#
|
||||||
|
# . . #
|
||||||
|
##$#$# ##
|
||||||
|
# . . #
|
||||||
|
# $#$# ###
|
||||||
|
## . . #
|
||||||
|
###$#$# #
|
||||||
|
# . #
|
||||||
|
#$# ###
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
####
|
||||||
|
######## #
|
||||||
|
#@ $ $ $$ ###
|
||||||
|
# ....*.* #
|
||||||
|
## ### ..*# #
|
||||||
|
#$$ # .* #
|
||||||
|
# # $ #.*# #
|
||||||
|
# $ #.. #
|
||||||
|
## $ ###
|
||||||
|
### #$#.#
|
||||||
|
# $ $ #
|
||||||
|
# ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
#####
|
||||||
|
######### #
|
||||||
|
### $ $ $ $. #
|
||||||
|
# .$.$ $.$.# #
|
||||||
|
# #.*..@..*.# #
|
||||||
|
# #.$.$ $.$. #
|
||||||
|
# .$ $ $ $ ###
|
||||||
|
# #########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
#####
|
||||||
|
############ #######
|
||||||
|
# # # ## # # # #
|
||||||
|
# # #$ $ # .$ $ # ##
|
||||||
|
# ..*.** *@* **.*.. #
|
||||||
|
## # $ $. # $ $# # #
|
||||||
|
# # # # ## # # #
|
||||||
|
####### ############
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
#########
|
||||||
|
## * ##
|
||||||
|
# # # # #
|
||||||
|
# #.$.$.# #
|
||||||
|
# $.$.$ #
|
||||||
|
#*#.$@$.#*#
|
||||||
|
# $.$.$ #
|
||||||
|
# #.$.$.# #
|
||||||
|
# # # # #
|
||||||
|
## * ##
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
#
|
||||||
|
# #####
|
||||||
|
##### ####
|
||||||
|
# ..$$ # #
|
||||||
|
# $ $ .#@#$ ##
|
||||||
|
#### # *## #
|
||||||
|
# # * #$.#
|
||||||
|
## $## . . #
|
||||||
|
# $.**.#.**.$ #
|
||||||
|
# . . ##$ ##
|
||||||
|
#.$# * # #
|
||||||
|
# ##* # ####
|
||||||
|
## $# #. $ $ #
|
||||||
|
# # $$.. #
|
||||||
|
#### #####
|
||||||
|
##### #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
#############
|
||||||
|
## # # ##
|
||||||
|
# .##$$ $ . #
|
||||||
|
# ...#.#.#.# #
|
||||||
|
## # $ $ .# #
|
||||||
|
# $. # # #$.$ #
|
||||||
|
# # $ $ #$##
|
||||||
|
# .$# @ #$. #
|
||||||
|
##$# $ $ # #
|
||||||
|
# $.$# # # .$ #
|
||||||
|
# #. $ $ # ##
|
||||||
|
# #.#.#.#... #
|
||||||
|
# . $ $$##. #
|
||||||
|
## # # ##
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
#############
|
||||||
|
## * ##
|
||||||
|
# ##.# ##.# #
|
||||||
|
# # $ $ $ $ # #
|
||||||
|
# .$. ## .$# #
|
||||||
|
# # # . # . #
|
||||||
|
# #$ $.$ #$# #
|
||||||
|
#* #..@..# *#
|
||||||
|
# #$# $.$ $# #
|
||||||
|
# . # . # # #
|
||||||
|
# #$. ## .$. #
|
||||||
|
# # $ $ $ $ # #
|
||||||
|
# #.## #.## #
|
||||||
|
## * ##
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
### ### ###
|
||||||
|
## # @ # ##
|
||||||
|
# $#$ $#$ #
|
||||||
|
# . . . . . #
|
||||||
|
##$#$ $#$##
|
||||||
|
# . . . . . #
|
||||||
|
# $ $#$ $ #
|
||||||
|
# . . . . . #
|
||||||
|
##$#$ $#$##
|
||||||
|
# . . . . . #
|
||||||
|
# $#$ $#$ #
|
||||||
|
## # # ##
|
||||||
|
### ### ###
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
### ###
|
||||||
|
# ### #
|
||||||
|
# # #
|
||||||
|
## $$$.$$$ ##
|
||||||
|
# .# . . #. #
|
||||||
|
# . # $ # . #
|
||||||
|
# .$ #.# $. #
|
||||||
|
##$ .$@$. $##
|
||||||
|
# .$ #.# $. #
|
||||||
|
# . # $ # . #
|
||||||
|
# .# . . #. #
|
||||||
|
## $$$.$$$ ##
|
||||||
|
# # #
|
||||||
|
# ### #
|
||||||
|
### ###
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
###########
|
||||||
|
# #
|
||||||
|
##$####.####$##
|
||||||
|
# $. $ $.$ $ .$ #
|
||||||
|
# # ... ... # #
|
||||||
|
# #$.$ $.$ $.$# #
|
||||||
|
# # . *#.#* . # #
|
||||||
|
# #$ $# $ #$ $# #
|
||||||
|
# .. ..$@$.. .. #
|
||||||
|
# #$ $# $ #$ $# #
|
||||||
|
# # . *#.#* . # #
|
||||||
|
# #$.$ $.$ $.$# #
|
||||||
|
# # ... ... # #
|
||||||
|
# $. $ $.$ $ .$ #
|
||||||
|
##$####.####$##
|
||||||
|
# #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
#### ### ####
|
||||||
|
# # # #
|
||||||
|
# # # # # #
|
||||||
|
# **$***$** #
|
||||||
|
# * . . * #
|
||||||
|
##$.## ##.$##
|
||||||
|
# * # # * #
|
||||||
|
# * @ * #
|
||||||
|
# * # # * #
|
||||||
|
##$.## ##.$##
|
||||||
|
# * . . * #
|
||||||
|
# **$***$** #
|
||||||
|
# # # # # #
|
||||||
|
# # # #
|
||||||
|
#### ### ####
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
###############
|
||||||
|
#. $ . $ .#
|
||||||
|
# ##$# # #$## #
|
||||||
|
# .* .#. *. #
|
||||||
|
# # *$* # #
|
||||||
|
##$$* # *$$##
|
||||||
|
# #. $. .$ .# #
|
||||||
|
#@ #* * *# #
|
||||||
|
# #. $. .$ .# #
|
||||||
|
##$$* # *$$##
|
||||||
|
# # *$* # #
|
||||||
|
# .* .#. *. #
|
||||||
|
# ##$# # #$## #
|
||||||
|
#. $ . $ .#
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
# #### # #### #
|
||||||
|
# # # #
|
||||||
|
# *. ### .* #
|
||||||
|
# $# $ $ $ $ #$ #
|
||||||
|
# # .* *. # #
|
||||||
|
# . # $ # . #
|
||||||
|
# $ ##$## $ #
|
||||||
|
#.* # . # *.#
|
||||||
|
# # ..$@$.. # #
|
||||||
|
#.* # . # *.#
|
||||||
|
# $ ##$## $ #
|
||||||
|
# . # $ # . #
|
||||||
|
# # .* *. # #
|
||||||
|
# $# $ $ $ $ #$ #
|
||||||
|
# *. ### .* #
|
||||||
|
# # # #
|
||||||
|
# #### # #### #
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
###############
|
||||||
|
## # ##
|
||||||
|
# *$ $*$$$*$ $* #
|
||||||
|
# $...$...$...$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $...$...$...$ #
|
||||||
|
# *$$$*$$$*$$$* #
|
||||||
|
# $...$...$...$ #
|
||||||
|
##$.$.$.@.$.$.$##
|
||||||
|
# $...$...$...$ #
|
||||||
|
# *$$$*$$$*$$$* #
|
||||||
|
# $...$...$...$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $...$...$...$ #
|
||||||
|
# *$ $*$$$*$ $* #
|
||||||
|
## # ##
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
#############
|
||||||
|
## . . . ##
|
||||||
|
## $.$ $.$ $.$ ##
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
#..*.*.*.*.*.*..#
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
#..*.*.*@*.*.*..#
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
#..*.*.*.*.*.*..#
|
||||||
|
# $ * $ * $ * $ #
|
||||||
|
## $.$ $.$ $.$ ##
|
||||||
|
## . . . ##
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### . ####
|
||||||
|
# ##$.$## #
|
||||||
|
#### . ####
|
||||||
|
# ## $$.$$ ## #
|
||||||
|
## ## . ## ##
|
||||||
|
### $##$.$##$ ###
|
||||||
|
# $ $ $...$ $ $ #
|
||||||
|
#.......@.......#
|
||||||
|
# $ $ $...$ $ $ #
|
||||||
|
### $##$.$##$ ###
|
||||||
|
## ## . ## ##
|
||||||
|
# ## $$.$$ ## #
|
||||||
|
#### . ####
|
||||||
|
# ##$.$## #
|
||||||
|
#### . ####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
#################
|
||||||
|
# . . . #
|
||||||
|
# ##$###$###$## #############
|
||||||
|
#.## ## ## ##.# . . #
|
||||||
|
# $ * * $ # ##$###$## #
|
||||||
|
# ## # # # #.## ## ##.#
|
||||||
|
# ##*###*###*## # $ * $ #
|
||||||
|
# # # # ## # ## # # #
|
||||||
|
#.$ * * $.@ ##*###*## #
|
||||||
|
# ## # # # # # # ## #
|
||||||
|
# ##*###*###*## # $ * $ #
|
||||||
|
# # # # ## #.## ## ##.#
|
||||||
|
# $ * * $ # ##$###$## #
|
||||||
|
#.## ## ## ##.# . . #
|
||||||
|
# ##$###$###$## #############
|
||||||
|
# . . . #
|
||||||
|
#################
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
###############
|
||||||
|
## ##
|
||||||
|
# ##### ##### # ###########
|
||||||
|
# # . . . . . # ### ##
|
||||||
|
# #$ $ $ $ $ $# ### ### #
|
||||||
|
# # .#.#.#.#. # ## # . . . # #
|
||||||
|
# #$ $ $ $ $ $# ## #$ $ $ $# #
|
||||||
|
# # .#.#.#.#. # ## # .#.#. # #
|
||||||
|
# $ $ $@$ $ $ ## $ $ $ $ #
|
||||||
|
# # .#.#.#.#. # ## # .#.#. # #
|
||||||
|
# #$ $ $ $ $ $# ## #$ $ $ $# #
|
||||||
|
# # .#.#.#.#. # ## # . . . # #
|
||||||
|
# #$ $ $ $ $ $# ### ### #
|
||||||
|
# # . . . . . # ### ##
|
||||||
|
# ##### ##### # ###########
|
||||||
|
## ##
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
### # @ ####
|
||||||
|
## # $ # ##
|
||||||
|
# #..*.#*...# #
|
||||||
|
# # . $# $ $# . #
|
||||||
|
# .# # $.# #
|
||||||
|
# #.$ #$ #* #
|
||||||
|
#. * # $ # .$# #
|
||||||
|
# $ #$ $$#$$ $# $ #
|
||||||
|
# #$. # $ # * .#
|
||||||
|
# *# $# $.# #
|
||||||
|
# #.$ # #. #
|
||||||
|
# . #$ $ #$ . # #
|
||||||
|
# #...*#.*..# #
|
||||||
|
## # $ # ##
|
||||||
|
#### # ###
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
###### #####
|
||||||
|
## #### #
|
||||||
|
# ## $ # #
|
||||||
|
# # .# $# $ #
|
||||||
|
# #$.$ # #######
|
||||||
|
# $. # ### # #
|
||||||
|
### .$. . # #.$.$ #
|
||||||
|
# $. ###$#$# ## ##
|
||||||
|
#### #$ # #
|
||||||
|
# # $ ###@###. #
|
||||||
|
# $ # #.. #..##
|
||||||
|
###### # ..# . #
|
||||||
|
# $$ #..## ..#
|
||||||
|
# $ $## # #
|
||||||
|
# $$ # #
|
||||||
|
# #############
|
||||||
|
####
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
####
|
||||||
|
####### ####
|
||||||
|
# $ ##
|
||||||
|
####$ ###.### ##
|
||||||
|
# $ # #.# # #
|
||||||
|
# # $ # . @ # #
|
||||||
|
# # #..### # #
|
||||||
|
# # $#.... # # #
|
||||||
|
# # #...#$ # # #
|
||||||
|
# #$ # ## $$ $ # #
|
||||||
|
# # # .* ## #
|
||||||
|
# #$$## # ## ##
|
||||||
|
# # ### ###
|
||||||
|
# ####$ ###
|
||||||
|
## #####
|
||||||
|
########
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
####
|
||||||
|
##### # #####
|
||||||
|
## # # #
|
||||||
|
# # ##### # # #
|
||||||
|
# # $ $ $ $ # ##
|
||||||
|
# # # # #
|
||||||
|
# ######$## # #
|
||||||
|
#### # * # # # #
|
||||||
|
# $ # .. $ # # #
|
||||||
|
# # # #*...# # # #
|
||||||
|
# .***#. ..# ## ##
|
||||||
|
##*....*.* $ # #
|
||||||
|
##* ##.##### # $ #
|
||||||
|
## # $ # # #
|
||||||
|
##@ #.#$ $ $ $# #
|
||||||
|
## $ $ # #
|
||||||
|
## ###########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
####
|
||||||
|
#### ### #
|
||||||
|
# ######### ..#
|
||||||
|
# $ @ $ $ #..#
|
||||||
|
# $# $ # # #..#
|
||||||
|
# ##*##$#$#$#..#
|
||||||
|
# $ #..#. ##
|
||||||
|
# #*. .##$## #
|
||||||
|
##$ $#..#. #
|
||||||
|
# ##$#########
|
||||||
|
# $$ $ #
|
||||||
|
## #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#####
|
||||||
|
## . ##
|
||||||
|
##.$ $.##
|
||||||
|
# $ * $ #
|
||||||
|
#. * * .#
|
||||||
|
# $ * $ #
|
||||||
|
##.$ $.##
|
||||||
|
####### ## . ## #######
|
||||||
|
## ## ## ## ## ##
|
||||||
|
# .$.$. # # # # $.$.$ #
|
||||||
|
# $.$.$ ##### ##### .$.$. #
|
||||||
|
# .$ $. $.@.$ #
|
||||||
|
# $.$.$ ########### .$.$. #
|
||||||
|
# .$.$. # # $.$.$ #
|
||||||
|
## ## ##### ## ##
|
||||||
|
####### #***# #######
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
######### #######
|
||||||
|
# # ####### # #
|
||||||
|
# .$. $ # . . #
|
||||||
|
## ### # # # $ $ #$ #
|
||||||
|
# . # #.$ $.## ##.##
|
||||||
|
# $ .$ .# #. #. # #
|
||||||
|
### ## #.$ $. $ $ #
|
||||||
|
## # ##$$ .## ## #
|
||||||
|
# ## ##. $$## # ##
|
||||||
|
# $ $ .$ $.# ## ###
|
||||||
|
# # .# .# #. $. $ #
|
||||||
|
##.## ##.$ $.# # . #
|
||||||
|
# $# $ $ # # # ### ##
|
||||||
|
# . . # @ $ .$. #
|
||||||
|
# # ####### # #
|
||||||
|
####### #########
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
##### ###
|
||||||
|
# ###############
|
||||||
|
# $ * @ * # #
|
||||||
|
# # * * * * #
|
||||||
|
## # * . * # ###
|
||||||
|
# # * * * * # #
|
||||||
|
# # * . * # #
|
||||||
|
# # * * * * # #
|
||||||
|
## # * . * # ##
|
||||||
|
## ########### #
|
||||||
|
# $ $ #
|
||||||
|
# ########## #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# ##### ####
|
||||||
|
#### $ $ ##
|
||||||
|
# $ ### ## ##
|
||||||
|
#@### # ###.#..# #
|
||||||
|
# $ # # .# #
|
||||||
|
# $ # # # # . #
|
||||||
|
## # # ###########
|
||||||
|
# ## $ $ $ #
|
||||||
|
###### #.#.#.###
|
||||||
|
# # # #
|
||||||
|
# # #.#.#.# #
|
||||||
|
# # $ $ $ # #
|
||||||
|
# # # # # #
|
||||||
|
## ### # #
|
||||||
|
## ### #
|
||||||
|
#### ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
####### ## #######
|
||||||
|
# ###### ##
|
||||||
|
#.### ## . ## ##
|
||||||
|
# . # $*# .# # #
|
||||||
|
# #. ###.# *$ # #######
|
||||||
|
# $ * ### . # ##
|
||||||
|
###$# * $$ ##$ .######## #
|
||||||
|
## $ # * # # # . # # #
|
||||||
|
# $$ $#. .# @ #. .#$ $$ #
|
||||||
|
# # # . # # # * # $ ##
|
||||||
|
# ########. $## $$ * #$###
|
||||||
|
## # . ### * $ #
|
||||||
|
####### # $* #.### .# #
|
||||||
|
# # #. #*$ # . #
|
||||||
|
## ## . ## ###.#
|
||||||
|
## ###### #
|
||||||
|
####### ## #######
|
||||||
|
|
||||||
|
; 41
|
||||||
|
'MS46 v2'
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# ......... #
|
||||||
|
# $ ###### ## @ #
|
||||||
|
####### # $ #############
|
||||||
|
## # $ #
|
||||||
|
##$## ###$#
|
||||||
|
#### ..# ##### #####
|
||||||
|
# ..*.**.# # # # ##
|
||||||
|
# ######.. $ # ###$ ##
|
||||||
|
# # #*. # $ #
|
||||||
|
# # # # # $$ # ## ###
|
||||||
|
# $ # ## ##### #
|
||||||
|
## $ ###### # #
|
||||||
|
# ### ### $# #
|
||||||
|
# $ #$ $ ## ####
|
||||||
|
#### $ $ ######
|
||||||
|
# #### #
|
||||||
|
#### ####
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# # # # # # #
|
||||||
|
# $ # # # # # # # # # $ #
|
||||||
|
# * * $ $ * * $ $ * * #
|
||||||
|
### # # # # # # # # # ###
|
||||||
|
# * *...... ......* * #
|
||||||
|
# # # ###### ###### # # #
|
||||||
|
# $ .# $ #. $ #
|
||||||
|
### #$ $$$$ @ $$$$ $# ###
|
||||||
|
# $ .# $ #. $ #
|
||||||
|
# # # ###### ###### # # #
|
||||||
|
# * *...... ......* * #
|
||||||
|
### # # # # # # # # # ###
|
||||||
|
# * * $ $ * * $ $ * * #
|
||||||
|
# $ # # # # # # # # # $ #
|
||||||
|
# # # # # # #
|
||||||
|
#########################
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
####
|
||||||
|
## ####
|
||||||
|
# $ .########
|
||||||
|
# $ # . $ $ #
|
||||||
|
#### ### .#### # #
|
||||||
|
# ....#$.# # # #
|
||||||
|
# #. $ # .#$ # # #
|
||||||
|
# ## $$$@$ # # #
|
||||||
|
## ## # # # #
|
||||||
|
### # ## # # #
|
||||||
|
### # ... #
|
||||||
|
# #$* *$# ##
|
||||||
|
# # ...$ ###
|
||||||
|
# $$ # #
|
||||||
|
# ######
|
||||||
|
#####
|
||||||
|
; 44
|
||||||
|
|
||||||
|
#####
|
||||||
|
## ##
|
||||||
|
# $ #
|
||||||
|
## $.$ ##
|
||||||
|
## $.*.$ ##
|
||||||
|
### $.*.*.$ ###
|
||||||
|
## $.*.$.*.$ ##
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
## $.*.$.*.$ ##
|
||||||
|
### $.*.*.$ ###
|
||||||
|
## $.*.$ ##
|
||||||
|
## $.$ ##
|
||||||
|
# $ #
|
||||||
|
## @ ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## $ ##
|
||||||
|
### $.$ ###
|
||||||
|
# $.*.$ #
|
||||||
|
## $.*.*.$ ##
|
||||||
|
### $.*.$.*.$ ###
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
# $.*.$ $.*.$ #
|
||||||
|
### $.*.$.*.$ ###
|
||||||
|
## $.*.*.$ ##
|
||||||
|
# $.*.$ #
|
||||||
|
### $.$ ###
|
||||||
|
## $ ##
|
||||||
|
# @ #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
#####
|
||||||
|
########### @ ###########
|
||||||
|
# . . # . #
|
||||||
|
# $$*$$$*$$ # .$ $$$.$. #
|
||||||
|
#.....*.....#*$.$...*.$*#
|
||||||
|
## $$*$$$*$$ # .$.$$$ $. ##
|
||||||
|
# . . # . #
|
||||||
|
# ####################### #
|
||||||
|
# . . . # . . . . #
|
||||||
|
## $$* $$* $ # $.$.$.$.$ ##
|
||||||
|
#.*.* * *.*.#*$$$ * $$$*#
|
||||||
|
# $ *$$ *$$ # $.$.$.$.$ #
|
||||||
|
# . . . # . . . . #
|
||||||
|
########### * ###########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
#####
|
||||||
|
########### @ ###########
|
||||||
|
# . . # .$. #
|
||||||
|
# .$.$$$.$. #.$ $.$ $.#
|
||||||
|
#.$$$.*.$$$.#$.*** ***.$#
|
||||||
|
## .$.$$$.$. #.$ $.$ $.##
|
||||||
|
# . . # .$. #
|
||||||
|
# ####################### #
|
||||||
|
# $. .$ # $ . #
|
||||||
|
## * .$. * # .** **$ ##
|
||||||
|
# $.$*$.$ # * *** * #
|
||||||
|
# * .$. * # $** **. #
|
||||||
|
# $. .$ # . $ #
|
||||||
|
########### * ###########
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 48
|
||||||
|
'Parallel Logic 2'
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# # # # # # # # #
|
||||||
|
# $#$ # $#$ # $#$ # $#$ #
|
||||||
|
# # # # # # # # #
|
||||||
|
# $#$ # $#$ # $#$ # $#$ #
|
||||||
|
# # # # # # # # #
|
||||||
|
## # ### # ### # ### # ##
|
||||||
|
# # # # # # # # #
|
||||||
|
# $ # $ # $ # $ #
|
||||||
|
## ### # ### # ### # ### ##
|
||||||
|
# # # # # # # # #
|
||||||
|
# # $ # $ # $ # #
|
||||||
|
## # ### # ### # ### # ##
|
||||||
|
#...........+...........#
|
||||||
|
######### # #########
|
||||||
|
# ### #
|
||||||
|
#### ####
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# # #
|
||||||
|
###$$ $$ $$ $$.$$ $$ $$ $$###
|
||||||
|
# $+.$..$..$..$..$..$..$..$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
# $$.$$.$$.$$.$$.$$.$$.$$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
##.$$.$$.$$.$$ $$.$$.$$.$$.##
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
# $$.$$.$$.$$.$$.$$.$$.$$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
# $..$..$..$..$..$..$..$..$ #
|
||||||
|
###$$ $$ $$ $$.$$ $$ $$ $$###
|
||||||
|
# # #
|
||||||
|
#########################
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# ##################### #
|
||||||
|
# ....... @ ....... #
|
||||||
|
# # .###############. # #
|
||||||
|
### #. # # # .# ###
|
||||||
|
# # $ # $ # #
|
||||||
|
# ##$## ##$## # #
|
||||||
|
### # ##$## ##### ###
|
||||||
|
# # # $ $ $ # # #
|
||||||
|
# # # # # # #
|
||||||
|
# # #####$######$## # #
|
||||||
|
## ## # # # ## ##
|
||||||
|
####### $ # $ #######
|
||||||
|
##$## ##$## #
|
||||||
|
###### # ##### ##$## ######
|
||||||
|
# # # $ $ $ # # #
|
||||||
|
###### # # # # # ######
|
||||||
|
###############
|
818
maps_suites/Sasquatch_IV_50.xsb
Normal file
818
maps_suites/Sasquatch_IV_50.xsb
Normal file
|
@ -0,0 +1,818 @@
|
||||||
|
; Sasquatch IV (50 puzzles, released March, 2001)
|
||||||
|
; These range in difficulty about like Sasquatch III. As always,
|
||||||
|
; I've tried to explore a wide variety of puzzle types.
|
||||||
|
;
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
####
|
||||||
|
#### #
|
||||||
|
# ####
|
||||||
|
# $ # . ##
|
||||||
|
# # . #
|
||||||
|
## #$$#. #
|
||||||
|
## #####
|
||||||
|
# @ ###
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
#####
|
||||||
|
###### #
|
||||||
|
# $ #
|
||||||
|
# $### ##
|
||||||
|
##.$. . .#
|
||||||
|
# $# #
|
||||||
|
# @######
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### #
|
||||||
|
# @ $# #
|
||||||
|
# #....#
|
||||||
|
##$ $ $ #
|
||||||
|
# ### ##
|
||||||
|
# #
|
||||||
|
##### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
######
|
||||||
|
# . ##
|
||||||
|
# #* #
|
||||||
|
# $.$ #
|
||||||
|
## *. #
|
||||||
|
## $.@ #
|
||||||
|
## # .$ #
|
||||||
|
# $$.# #
|
||||||
|
# ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
## .###
|
||||||
|
# .$ #
|
||||||
|
#* * ##
|
||||||
|
# $.$$ #
|
||||||
|
# . #
|
||||||
|
###*####
|
||||||
|
#@#
|
||||||
|
###
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
####
|
||||||
|
### #
|
||||||
|
# ..# #######
|
||||||
|
# #..# # ####
|
||||||
|
# #. ### $ #
|
||||||
|
# #. # $ $ $$ #
|
||||||
|
# # @ ### $## #
|
||||||
|
# #####
|
||||||
|
## #########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
###############
|
||||||
|
## $. .$ ##
|
||||||
|
# # ####### # #
|
||||||
|
# # # #
|
||||||
|
# .***$#$***. #
|
||||||
|
### # ###
|
||||||
|
# ####@#### #
|
||||||
|
# #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# # # # #
|
||||||
|
# $@$$ # $ # .. ..#
|
||||||
|
## ## ### ### ### ## ##
|
||||||
|
# # # # #
|
||||||
|
# # # # # # #
|
||||||
|
# ################# #
|
||||||
|
# #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
###########
|
||||||
|
#@ # # #
|
||||||
|
# $#$ $#
|
||||||
|
## #..# #
|
||||||
|
# #..# #
|
||||||
|
# #..# ##
|
||||||
|
#$ $#$ #
|
||||||
|
# # # #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
# .$ #
|
||||||
|
# ** #
|
||||||
|
##$. #
|
||||||
|
# ####
|
||||||
|
# ## #
|
||||||
|
# # #
|
||||||
|
# #
|
||||||
|
#.**$@#
|
||||||
|
# # #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
########
|
||||||
|
##.... @#
|
||||||
|
# # . #
|
||||||
|
## # # ##
|
||||||
|
# #$ # #
|
||||||
|
# $ # ##
|
||||||
|
###$ ## #
|
||||||
|
# $$ #
|
||||||
|
# # #
|
||||||
|
########
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
# ###
|
||||||
|
##*# #
|
||||||
|
## . ## #
|
||||||
|
# # ##
|
||||||
|
# #.# $ #
|
||||||
|
# $.###$ #
|
||||||
|
### ## #
|
||||||
|
# $$@#
|
||||||
|
##..## #
|
||||||
|
# #####
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
####
|
||||||
|
##### #
|
||||||
|
###. #$ ##
|
||||||
|
# * .*.#
|
||||||
|
# $.$ #$ #
|
||||||
|
### ### #
|
||||||
|
# ### ###
|
||||||
|
# $# $.$ #
|
||||||
|
#.*.@ * #
|
||||||
|
## $# .###
|
||||||
|
# #####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
######
|
||||||
|
# #####
|
||||||
|
# $ *# #
|
||||||
|
# * * $ #
|
||||||
|
###* . * #
|
||||||
|
# * .@. * #
|
||||||
|
# * . *###
|
||||||
|
# $ * * #
|
||||||
|
# #* $ #
|
||||||
|
##### #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
###########
|
||||||
|
# * #
|
||||||
|
# $$ ## $ #
|
||||||
|
# $..#$$ #
|
||||||
|
# ##*.*. #
|
||||||
|
#*#..@..#*#
|
||||||
|
# .*.*## #
|
||||||
|
# $$#..$ #
|
||||||
|
# $ ## $$ #
|
||||||
|
# * #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
#############
|
||||||
|
# $ . #
|
||||||
|
#.$ $### *$ #
|
||||||
|
# ** ## .* #
|
||||||
|
# .$#..$ $ #
|
||||||
|
# # .$.$### #
|
||||||
|
#$##..@..##$#
|
||||||
|
# ###$.$. # #
|
||||||
|
# $ $..#$. #
|
||||||
|
# *. ## ** #
|
||||||
|
# $* ###$ $.#
|
||||||
|
# . $ #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
###############
|
||||||
|
# #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# .$.$.#.$.$. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .$.$.#.$.$. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .# # @ # #. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .$.$.#.$.$. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .$.$.#.$.$. #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# #
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
###############
|
||||||
|
## # # # ##
|
||||||
|
# **.. ..** #
|
||||||
|
# * $$$ * #
|
||||||
|
##* .### ###. *##
|
||||||
|
# * ## $@$ ## * #
|
||||||
|
# . # # . #
|
||||||
|
# .$#$ ### $#$. #
|
||||||
|
## $ # # $ ##
|
||||||
|
# .$#$ ### $#$. #
|
||||||
|
# . # # . #
|
||||||
|
# * ## $ $ ## * #
|
||||||
|
##* .### ###. *##
|
||||||
|
# * $$$ * #
|
||||||
|
# **.. ..** #
|
||||||
|
## # # # ##
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
#########
|
||||||
|
# * #
|
||||||
|
# ## ## #
|
||||||
|
# * * #
|
||||||
|
### # ###
|
||||||
|
# .$#$. #
|
||||||
|
# # @ # #
|
||||||
|
# .$#$. #
|
||||||
|
### # ###
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
####
|
||||||
|
# #########
|
||||||
|
# ## #
|
||||||
|
# $$$# #
|
||||||
|
##...# #$$$#
|
||||||
|
#...# #...#
|
||||||
|
#$$$ #...##
|
||||||
|
# ##$$$ #
|
||||||
|
####### @ #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
#########
|
||||||
|
## # #
|
||||||
|
## $# # #$###
|
||||||
|
# #. .# #
|
||||||
|
# $ *.@.* $ #
|
||||||
|
# #. .# #
|
||||||
|
###$# # #$ ##
|
||||||
|
# # ##
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# #### ####
|
||||||
|
### $ $ #
|
||||||
|
# # $ *...##
|
||||||
|
# $ # #### #.. #
|
||||||
|
## # #
|
||||||
|
# $$ $$@ #...##
|
||||||
|
# # #######
|
||||||
|
#### # #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
####
|
||||||
|
###### #
|
||||||
|
## $ $ #
|
||||||
|
## $ #$ #
|
||||||
|
# $ # $#
|
||||||
|
# # ## ##
|
||||||
|
###$ ..# #
|
||||||
|
# #*...@#
|
||||||
|
# ..####
|
||||||
|
# ####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# #
|
||||||
|
########$$ #
|
||||||
|
# $ ##
|
||||||
|
# #### $$ ##
|
||||||
|
####....# $ #
|
||||||
|
# ...# $$ #
|
||||||
|
# #...# $ ###
|
||||||
|
# @## ## $ #
|
||||||
|
# ##
|
||||||
|
# # #####
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
###############
|
||||||
|
## ....# ##
|
||||||
|
# # # ### #
|
||||||
|
# ....# # # #
|
||||||
|
# # $ $ # #
|
||||||
|
## # $@$ # #
|
||||||
|
####### $ $ # #
|
||||||
|
##*# $ $ # #
|
||||||
|
### #### # #
|
||||||
|
## ### #
|
||||||
|
##### ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# @ ### #
|
||||||
|
# # $ #
|
||||||
|
#### #$ $ ####
|
||||||
|
# # $ $#
|
||||||
|
# ### $ $ #
|
||||||
|
#.......# ##
|
||||||
|
#### ## # #
|
||||||
|
# # #
|
||||||
|
###### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
####
|
||||||
|
### ###
|
||||||
|
### ##
|
||||||
|
# $$#$$$@ ##
|
||||||
|
# # #
|
||||||
|
# ### #$$$#
|
||||||
|
# # # #
|
||||||
|
#### .## #
|
||||||
|
####.## ##
|
||||||
|
## .## #
|
||||||
|
##... #
|
||||||
|
# .#####
|
||||||
|
# .#
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
####
|
||||||
|
# #####
|
||||||
|
# $ $ #
|
||||||
|
#* . . #
|
||||||
|
# ########
|
||||||
|
# # #
|
||||||
|
#### $ #
|
||||||
|
# #$### #
|
||||||
|
# @$# # ####
|
||||||
|
# $$ $$ # #
|
||||||
|
# # ## $ * #
|
||||||
|
## ###.....#. #
|
||||||
|
#... ###$# . #
|
||||||
|
# $ $ . #
|
||||||
|
######## #####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
# ## ####
|
||||||
|
## # # ###
|
||||||
|
# ##$ #
|
||||||
|
#### # * # #
|
||||||
|
# # * # #
|
||||||
|
#### * # #
|
||||||
|
### . # #
|
||||||
|
#@#.****$# #
|
||||||
|
# # #
|
||||||
|
# ##### # #
|
||||||
|
# ## #
|
||||||
|
###### ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #######
|
||||||
|
# ## ##
|
||||||
|
#.# ###
|
||||||
|
#####.# # #######
|
||||||
|
## ##.####. ## ##
|
||||||
|
## .....@.# $ ###
|
||||||
|
# ###.# #.# $ $ ##
|
||||||
|
# #. # .# $ $ $ #
|
||||||
|
# # #. ## #$ $ $ #
|
||||||
|
## # #. # $ $ $ ####
|
||||||
|
### #. # $ $ ##
|
||||||
|
# # # $ $ #
|
||||||
|
# # ######$##
|
||||||
|
# #### #
|
||||||
|
## #######
|
||||||
|
########
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
#############
|
||||||
|
# @ #
|
||||||
|
#**.*****.**#
|
||||||
|
# $ $ #
|
||||||
|
# # ### #
|
||||||
|
##### #####
|
||||||
|
######## ######
|
||||||
|
# #
|
||||||
|
#**.*******.**#
|
||||||
|
# $ $ #
|
||||||
|
# ####### #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
####
|
||||||
|
### #
|
||||||
|
######## $$ ##
|
||||||
|
### # .*.$ #
|
||||||
|
# $$ # #....$ #
|
||||||
|
# $.. # $ $ #
|
||||||
|
##$*. ## ######
|
||||||
|
# ..$## ### #
|
||||||
|
## . # $# #
|
||||||
|
# #$ @# . ##
|
||||||
|
# ### ##$.. #
|
||||||
|
###### ## .*$##
|
||||||
|
# $ $ # ..$ #
|
||||||
|
# $....# # $$ #
|
||||||
|
# $.*. # ###
|
||||||
|
## $$ ########
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
#######
|
||||||
|
## ##
|
||||||
|
# *.* #
|
||||||
|
# #$ $# #
|
||||||
|
##### *.* #####
|
||||||
|
## ## ## ##
|
||||||
|
# # ###.### # #
|
||||||
|
# *$* # $*$ # *$* #
|
||||||
|
# . . ..$@$.. . . #
|
||||||
|
# *$* # $*$ # *$* #
|
||||||
|
# # ###.### # #
|
||||||
|
## ## ## ##
|
||||||
|
##### *.* #####
|
||||||
|
# #$ $# #
|
||||||
|
# *.* #
|
||||||
|
## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
#####
|
||||||
|
# @ #
|
||||||
|
# $ #
|
||||||
|
# $ #
|
||||||
|
## $ ##
|
||||||
|
#####.*.*.#####
|
||||||
|
# *. .* #
|
||||||
|
# $$$. # .$$$ #
|
||||||
|
# *. .* #
|
||||||
|
#####.*.*.#####
|
||||||
|
## $ ##
|
||||||
|
# $ #
|
||||||
|
# $ #
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## $ ##
|
||||||
|
## $.$ ##
|
||||||
|
## $ * $ ##
|
||||||
|
## $.*.*.$ ##
|
||||||
|
### $.*.#.*.$ ###
|
||||||
|
# $ *.# #.* $ #
|
||||||
|
# $.*.# #.*.$ #
|
||||||
|
# $ *.# #.* $ #
|
||||||
|
### $.*.#.*.$ ###
|
||||||
|
## $.*.*.$ ##
|
||||||
|
## $ * $ ##
|
||||||
|
## $.$ ##
|
||||||
|
## $ ##
|
||||||
|
# @ #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#####
|
||||||
|
### ##
|
||||||
|
## $ ##
|
||||||
|
## $ *$ ##
|
||||||
|
## $.#.$.$ ##
|
||||||
|
## $.$. .$.$ ##
|
||||||
|
## $.$. . .$.$ ##
|
||||||
|
# *$. * * .# $##
|
||||||
|
# . . @ . . #
|
||||||
|
##$ #. * * .$* #
|
||||||
|
## $.$. . .$.$ ##
|
||||||
|
## $.$. .$.$ ##
|
||||||
|
## $.$.#.$ ##
|
||||||
|
## $* $ ##
|
||||||
|
## $ ##
|
||||||
|
## ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
## ##
|
||||||
|
## # ##
|
||||||
|
## ##
|
||||||
|
# *$#$* #
|
||||||
|
# $...$ #
|
||||||
|
# #.@.# #
|
||||||
|
# $...$ #
|
||||||
|
# *$#$* #
|
||||||
|
## ##
|
||||||
|
## # ##
|
||||||
|
## ##
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
## ##
|
||||||
|
## # ##
|
||||||
|
# .$ $. #
|
||||||
|
# * * #
|
||||||
|
# .* #.# *. #
|
||||||
|
# $ # $ # $ #
|
||||||
|
# .$@$. #
|
||||||
|
# $ # $ # $ #
|
||||||
|
# .* #.# *. #
|
||||||
|
# * * #
|
||||||
|
# .$ $. #
|
||||||
|
## # ##
|
||||||
|
## ##
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
##### # #####
|
||||||
|
## # ##### # ##
|
||||||
|
# # # # #
|
||||||
|
## $* $ $ *$ ##
|
||||||
|
# ..*# #*.. #
|
||||||
|
###*.. # ..*###
|
||||||
|
# $ *$ # $* $ #
|
||||||
|
# # * # #
|
||||||
|
### ###* *### ###
|
||||||
|
# # * # #
|
||||||
|
# $ *$ # $* $ #
|
||||||
|
###*.. # ..*###
|
||||||
|
# ..*#@#*.. #
|
||||||
|
## $* $ $ *$ ##
|
||||||
|
# # # # #
|
||||||
|
## # ##### # ##
|
||||||
|
##### # #####
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
###
|
||||||
|
#################
|
||||||
|
###### ## ## ######
|
||||||
|
#### # $$ # $$ # ####
|
||||||
|
# #$$ #.. ..# $$# #
|
||||||
|
# ### #.###.# ### #
|
||||||
|
#* ##### ### #*# ### ##### *#
|
||||||
|
# ..@.. #
|
||||||
|
#* ##### ### #*# ### ##### *#
|
||||||
|
# ### #.###.# ### #
|
||||||
|
# #$$ #.. ..# $$# #
|
||||||
|
#### # $$ # $$ # ####
|
||||||
|
###### ## ## ######
|
||||||
|
#################
|
||||||
|
###
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
###############
|
||||||
|
# .. . . #
|
||||||
|
# $##$ # $$##.#
|
||||||
|
# # ### # #
|
||||||
|
#.## # # ##$ #
|
||||||
|
# $ $ $ $ #
|
||||||
|
#.## # # # #
|
||||||
|
#.## #@# ###.#
|
||||||
|
# $ # ### # #.#
|
||||||
|
# $ $ #
|
||||||
|
#.### ### # # #
|
||||||
|
# # # ###.#
|
||||||
|
# $#$$###$# # #
|
||||||
|
# . . . . #
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
#### ##### ####
|
||||||
|
# ## # ##### #
|
||||||
|
# $.# # $ $ #
|
||||||
|
# .# # ##### #
|
||||||
|
## .#### ### ##$##
|
||||||
|
#$. $ # $ #
|
||||||
|
# ..### # # #
|
||||||
|
#*..@#######$#####
|
||||||
|
# ..#### # #
|
||||||
|
#$. $ # #
|
||||||
|
## .######$## #
|
||||||
|
# .# # ##$##
|
||||||
|
# $.# # $ #
|
||||||
|
# ## # # #
|
||||||
|
#### ########
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
################
|
||||||
|
## ##
|
||||||
|
# ############ #
|
||||||
|
# # # #
|
||||||
|
# # $$$ $ $ @# #
|
||||||
|
# # ### $$# ##
|
||||||
|
## $ ## # $ $ #
|
||||||
|
## # # #### #
|
||||||
|
###.. # # ###
|
||||||
|
## .. # .# $ ####
|
||||||
|
# #### ## .# #.# #
|
||||||
|
# # ###* $ .# ##
|
||||||
|
#### # .# #. #
|
||||||
|
# ## .###.## #
|
||||||
|
###### #
|
||||||
|
# # # #
|
||||||
|
############
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# . . . . . . . . . #
|
||||||
|
# $ $ # $ $ # $ $ # $ $ # $ $ #
|
||||||
|
###.#####.#####.#####.#####.###
|
||||||
|
# $ $ # $ $ # $ $ # $ $ # $ $ #
|
||||||
|
# . . # . . #
|
||||||
|
###.#####.###########.#####.###
|
||||||
|
# $ # $ . *@# # * * $ #
|
||||||
|
# $ * * # # * . $ # $ #
|
||||||
|
###.#####.###########.#####.###
|
||||||
|
# . . # . . #
|
||||||
|
# $ $ # $ $ # $ $ # $ $ # $ $ #
|
||||||
|
###.#####.#####.#####.#####.###
|
||||||
|
# $ $ # $ $ # $ $ # $ $ # $ $ #
|
||||||
|
# . . . . . . . . . #
|
||||||
|
###############################
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
#####################
|
||||||
|
## # # # # ##
|
||||||
|
# * * * * * * * * * * #
|
||||||
|
# # # # # # # # # # #
|
||||||
|
# $.$ $.$ $.$ $.$ $.$ #
|
||||||
|
##. .#. .#. .#. .#. .##
|
||||||
|
# $.$ $.$ $.$ $.$ $.$ #
|
||||||
|
# # # # # # # # # # #
|
||||||
|
# $.$ $.$ $.$ $.$ $.$ #
|
||||||
|
##. .#. .#.@.#. .#. .##
|
||||||
|
# $.$ $.$ $.$ $.$ $.$ #
|
||||||
|
# # # # # # # # # # #
|
||||||
|
# * * * * * * * * * * #
|
||||||
|
## # # # # ##
|
||||||
|
#####################
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
# # # # #
|
||||||
|
#####################
|
||||||
|
## # # # ##
|
||||||
|
### .$$. .$$. .$$. .$$. ###
|
||||||
|
# .* *.* *.* *.* *. #
|
||||||
|
# $ ## $ ## $ ## $ ## $ #
|
||||||
|
# $ ## $ ## $ ## $ ## $ #
|
||||||
|
# .* *.* *.* *.* *. #
|
||||||
|
### .$$. .$$.@.$$. .$$. ###
|
||||||
|
# .* *.* *.* *.* *. #
|
||||||
|
# $ ## $ ## $ ## $ ## $ #
|
||||||
|
# $ ## $ ## $ ## $ ## $ #
|
||||||
|
# .* *.* *.* *.* *. #
|
||||||
|
### .$$. .$$. .$$. .$$. ###
|
||||||
|
## # # # ##
|
||||||
|
#####################
|
||||||
|
# # # # #
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
#####
|
||||||
|
############ @ ############
|
||||||
|
# # #
|
||||||
|
#$.$ .$.$.$.#**.**$$$*.**#
|
||||||
|
#.$.$.$.$.$.$# $. ..$.$ #
|
||||||
|
#$.$.$.$.$.$.# $.$.. .$ #
|
||||||
|
##.$.$.$. $.$#**.*$$$**.**##
|
||||||
|
# # #
|
||||||
|
# ######################### #
|
||||||
|
# .. .. # $ . $. $ . #
|
||||||
|
## $*$*$$$$*$ # $ $.$. . ##
|
||||||
|
# *. .. .$.$ #.$.$. $.$.$#
|
||||||
|
# $.$. .. .* #$.$.$ .$.$.#
|
||||||
|
# $*$$$$*$*$ # . .$.$ $ #
|
||||||
|
# .. .. # . $ .$ . $ #
|
||||||
|
############ * ############
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# # # # # # # #
|
||||||
|
# # # # # # # # # #
|
||||||
|
# .$*$.$*$.$*$.$*$.$*$. #
|
||||||
|
###.# # # # # # # # # # #.###
|
||||||
|
# $ . . . . . . . . . $ #
|
||||||
|
# *# #$#$#$#$#$#$#$#$# #* #
|
||||||
|
# $ * . . . . . . . * $ #
|
||||||
|
###*..$ #$#$#$@$#$#$# $..*###
|
||||||
|
# $ * . . . . . . . * $ #
|
||||||
|
# *# #$#$#$#$#$#$#$#$# #* #
|
||||||
|
# $ . . . . . . . . . $ #
|
||||||
|
###.# # # # # # # # # # #.###
|
||||||
|
# .$*$.$*$.$*$.$*$.$*$. #
|
||||||
|
# # # # # # # # # #
|
||||||
|
# # # # # # # #
|
||||||
|
#############################
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# * * * #
|
||||||
|
# $ ### $ ##### $ ### $ #
|
||||||
|
# $ $ ### $ ### $ ### $ $ #
|
||||||
|
#*# $ ### $ # $ ### $ #*#
|
||||||
|
# ## .*.*.*.*.$.*.*.*.*. ## #
|
||||||
|
# ###$ $ $ $ $.$ $ $ $ $### #
|
||||||
|
## ..*.....*...$...*.....*.. ##
|
||||||
|
## $ $ $ $ $ *@* $ $ $ $ $ ##
|
||||||
|
## ..*.....*...$...*.....*.. ##
|
||||||
|
# ###$ $ $ $ $.$ $ $ $ $### #
|
||||||
|
# ## .*.*.*.*.$.*.*.*.*. ## #
|
||||||
|
#*# $ ### $ # $ ### $ #*#
|
||||||
|
# $ $ ### $ ### $ ### $ $ #
|
||||||
|
# $ ### $ ##### $ ### $ #
|
||||||
|
# * * * #
|
||||||
|
#############################
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# .$ ## $. ## .$ ## $. ## .$ #
|
||||||
|
#$ . . $##$ . . $##$ .#
|
||||||
|
#. $##$ . . $##$ . . $#
|
||||||
|
# $. ## .$ ## $. ## .$ ## $. #
|
||||||
|
### # # ## ## # # ## ## ##
|
||||||
|
### # # ## # . # # ## ## ##
|
||||||
|
# $. ## .$ # $ # .$ ## $. #
|
||||||
|
#. $##$ . .$## #$ . . $#
|
||||||
|
#$ . . $# @#$. . $##$ .#
|
||||||
|
# .$ ## $. # $ # $. ## .$ #
|
||||||
|
## ## ## # # . # ## # # ###
|
||||||
|
## ## ## # # ## ## # # ###
|
||||||
|
# .$ ## $. ## .$ ## $. ## .$ #
|
||||||
|
#$ . . $##$ . . $##$ .#
|
||||||
|
#. $##$ . . $##$ . . $#
|
||||||
|
# $. ## .$ ## $. ## .$ ## $. #
|
||||||
|
##############################
|
||||||
|
|
||||||
|
|
906
maps_suites/Sasquatch_VII_50.xsb
Normal file
906
maps_suites/Sasquatch_VII_50.xsb
Normal file
|
@ -0,0 +1,906 @@
|
||||||
|
; Sasquatch VII (50 puzzles, released June 2004)
|
||||||
|
; This set has a lot of symmetry but not as much as Sasquatch VI.
|
||||||
|
; I tried to do more "normal" puzzles this time. It also contains more expreiments
|
||||||
|
; with squares plus other shapes such as diamonds and a circle. As usual several
|
||||||
|
; oversize puzzles are at the end of the set.
|
||||||
|
;
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
####
|
||||||
|
#### ##
|
||||||
|
# # *###
|
||||||
|
##.$# * ##
|
||||||
|
# @ * * #
|
||||||
|
# # * #
|
||||||
|
##### * * #
|
||||||
|
## * ##
|
||||||
|
## #
|
||||||
|
## #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### #
|
||||||
|
# $ #
|
||||||
|
### #$###
|
||||||
|
# * . #
|
||||||
|
# * * #@#
|
||||||
|
# * * #
|
||||||
|
### * .##
|
||||||
|
## #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
####
|
||||||
|
## #######
|
||||||
|
## * $ # #
|
||||||
|
## * * ** ##
|
||||||
|
## * * #@.* #
|
||||||
|
# * * ## ** #
|
||||||
|
# #### ##
|
||||||
|
### ## # #
|
||||||
|
#### #####
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
# # # #
|
||||||
|
# .$..$##
|
||||||
|
# $..$ #
|
||||||
|
###$#@# #
|
||||||
|
# $. #
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
########
|
||||||
|
#@ # ###
|
||||||
|
# $ $ #
|
||||||
|
####$##$## #
|
||||||
|
# .* .* .*.#
|
||||||
|
# #
|
||||||
|
## # # ##
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
#.$*$#.##
|
||||||
|
# .$ $ #
|
||||||
|
## ... #
|
||||||
|
# $ $ ##
|
||||||
|
# $###.#
|
||||||
|
# @ ##
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
### . ##
|
||||||
|
# .# #
|
||||||
|
# $$*$$ #
|
||||||
|
### . ##
|
||||||
|
# . @#
|
||||||
|
######
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
#########
|
||||||
|
# $ . #
|
||||||
|
# # #
|
||||||
|
#*** ***#
|
||||||
|
# # @ #
|
||||||
|
# .$.$ #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
####$. #
|
||||||
|
# * . #
|
||||||
|
#@#.#$# #
|
||||||
|
# $ * #
|
||||||
|
# .$####
|
||||||
|
### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
#######
|
||||||
|
## #
|
||||||
|
### .### #
|
||||||
|
# $ $ # #
|
||||||
|
#@*.$.. #
|
||||||
|
# $ $ ###
|
||||||
|
### #. #
|
||||||
|
# ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 11
|
||||||
|
'derived from SokHard 1'
|
||||||
|
|
||||||
|
######
|
||||||
|
# * .#
|
||||||
|
#. $#
|
||||||
|
#.#$.#
|
||||||
|
# $##
|
||||||
|
##@ $ #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 12
|
||||||
|
'derived from SokHard 5'
|
||||||
|
|
||||||
|
#####
|
||||||
|
##### @ #
|
||||||
|
# $ $ #
|
||||||
|
# ****.#
|
||||||
|
# . # #
|
||||||
|
# ### ##
|
||||||
|
## #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
####
|
||||||
|
####### #
|
||||||
|
# * #
|
||||||
|
# .$.$. #
|
||||||
|
## $###$ #
|
||||||
|
#*.# #.*#
|
||||||
|
# $###$ ##
|
||||||
|
# .$.$. #
|
||||||
|
# * #
|
||||||
|
#@ ######
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
######
|
||||||
|
# #######
|
||||||
|
# ## $ $ $ #
|
||||||
|
# . # # # #
|
||||||
|
###..$ @ #
|
||||||
|
#..# #####
|
||||||
|
## #$#
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
####
|
||||||
|
### ##
|
||||||
|
# $$. ###
|
||||||
|
# .$.$$ #
|
||||||
|
## . . #
|
||||||
|
### @# ###
|
||||||
|
# . . ##
|
||||||
|
# $$.$. #
|
||||||
|
### .$$ #
|
||||||
|
## ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
####
|
||||||
|
# # #####
|
||||||
|
#$.#
|
||||||
|
### ########
|
||||||
|
# #
|
||||||
|
# #.***..*#.###
|
||||||
|
# $$$ @ $$$ #
|
||||||
|
###.##### #.# #
|
||||||
|
# #
|
||||||
|
######## ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
####
|
||||||
|
###### @#
|
||||||
|
# # $ #
|
||||||
|
# $.#. #
|
||||||
|
# #. ###
|
||||||
|
###$.*.$$ #
|
||||||
|
# .#. #
|
||||||
|
##$ ####
|
||||||
|
# $ ##
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
##$ #
|
||||||
|
## *. #
|
||||||
|
# .$ ##
|
||||||
|
## .* #
|
||||||
|
# $@$ #
|
||||||
|
# *. ##
|
||||||
|
## $. #
|
||||||
|
# .* ##
|
||||||
|
# $##
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
#######
|
||||||
|
### ##
|
||||||
|
# *..* #
|
||||||
|
# #$ $#@#
|
||||||
|
# *$$* #
|
||||||
|
## ... ###
|
||||||
|
# $# #
|
||||||
|
# ** ####
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
####
|
||||||
|
##### #
|
||||||
|
# #
|
||||||
|
# ### #
|
||||||
|
##$* # ##
|
||||||
|
# *..# #
|
||||||
|
# $$$ #
|
||||||
|
##*. $ ##
|
||||||
|
# $*. #
|
||||||
|
# . ###
|
||||||
|
## . #
|
||||||
|
# @##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
####
|
||||||
|
#### #
|
||||||
|
# #. #
|
||||||
|
# $$ ###
|
||||||
|
# #. ##
|
||||||
|
# #*## #
|
||||||
|
# # * # #
|
||||||
|
# @ * $ #
|
||||||
|
# .## ###
|
||||||
|
#### #* #
|
||||||
|
## # #
|
||||||
|
### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
########### ## #
|
||||||
|
# $. $ $ # #
|
||||||
|
# # $..*.+*. # #
|
||||||
|
# $. $ $ # #
|
||||||
|
####### ## ### #
|
||||||
|
# # *#
|
||||||
|
## ##### #
|
||||||
|
# #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
####
|
||||||
|
#### ##
|
||||||
|
# # *###
|
||||||
|
##.$# * ##
|
||||||
|
# @ * * ##
|
||||||
|
# # * * ##
|
||||||
|
##### * * * #
|
||||||
|
## * * #
|
||||||
|
## * * #
|
||||||
|
## * ##
|
||||||
|
## #
|
||||||
|
## #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
#################
|
||||||
|
#@ # # # #
|
||||||
|
# # # # # # # # ###
|
||||||
|
# $.$.$.$.$.$.$. #
|
||||||
|
###.$.$.$.$.$.$.$ #
|
||||||
|
#$.$.$.$.$.$.$. #
|
||||||
|
# # # # # # # # #
|
||||||
|
# # # # #
|
||||||
|
#################
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
###################
|
||||||
|
# $.$. *.$ * $. #
|
||||||
|
# .$ * $.* .$.$ #
|
||||||
|
#@$.$. .$ * * $. ##
|
||||||
|
# .$ * * $. .$.$ #
|
||||||
|
# $.$. *.$ * $. #
|
||||||
|
# .$ * $.* .$.$ #
|
||||||
|
##################
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
####
|
||||||
|
# ####
|
||||||
|
##### # #
|
||||||
|
########### $ #
|
||||||
|
# # # # # ##*# #
|
||||||
|
# $ $# #. .$. .*##
|
||||||
|
# #*## # # ##*# #
|
||||||
|
##*.@.$. .# #$ $ #
|
||||||
|
# #*## # # # # #
|
||||||
|
# $ ###########
|
||||||
|
# # #####
|
||||||
|
#### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
#### ######
|
||||||
|
#### @###### #
|
||||||
|
# # #
|
||||||
|
# ###*## $ $ #$##
|
||||||
|
# #... ##### #
|
||||||
|
# #*... $ #$#
|
||||||
|
# *...# # #
|
||||||
|
### #### $ $ $$#
|
||||||
|
# ####### #
|
||||||
|
#### #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
#####
|
||||||
|
# . ##########
|
||||||
|
# ##
|
||||||
|
### ### ####$$ #
|
||||||
|
# ... # # ## # ##
|
||||||
|
# # ## # #
|
||||||
|
## #### # # #
|
||||||
|
## # # # $$ # #
|
||||||
|
# @ # ## # #
|
||||||
|
# # # # # ##
|
||||||
|
### # ###### #
|
||||||
|
##### #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# ####### #
|
||||||
|
# $ @ $ #
|
||||||
|
## ######### ##
|
||||||
|
## ###....## #
|
||||||
|
# ## ###
|
||||||
|
# # # # .## $ #
|
||||||
|
# # . # # #
|
||||||
|
######## $ #
|
||||||
|
# # ### $ ###
|
||||||
|
# # # # # $ #
|
||||||
|
## # # #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
########
|
||||||
|
#. # #
|
||||||
|
#.$ ##########
|
||||||
|
#.$###.# @ # #
|
||||||
|
#.$ # $$$ # # $ #
|
||||||
|
# $ #..# # * #
|
||||||
|
## # # # ..*##
|
||||||
|
#* .$ ## * #
|
||||||
|
# # ###### $ #
|
||||||
|
### ## # #
|
||||||
|
### $$ ##$.$.*#####
|
||||||
|
# ... .# .$.* # #
|
||||||
|
# $$ # $.* $ #
|
||||||
|
# # # ### # # #
|
||||||
|
# #### # ##### #
|
||||||
|
##### # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
##########
|
||||||
|
## # # ##
|
||||||
|
# @ * * #
|
||||||
|
# $.$$.$ #
|
||||||
|
##*.$..$.*##
|
||||||
|
# $. .$ #
|
||||||
|
# $. .$ #
|
||||||
|
##*.$..$.*##
|
||||||
|
# $.$$.$ #
|
||||||
|
# * * #
|
||||||
|
## # # ##
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
#####
|
||||||
|
### #####
|
||||||
|
# # #
|
||||||
|
# $.$.$.$ ##
|
||||||
|
# .$.$.$. #
|
||||||
|
## $.$.$.$ #
|
||||||
|
# #.$.#.$.# #
|
||||||
|
# $.$.$.$ ##
|
||||||
|
# .$.$.$. #
|
||||||
|
## $.$.$.$ #
|
||||||
|
# # #
|
||||||
|
#####@ ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
### # # # ###
|
||||||
|
# * * $ * #
|
||||||
|
# # . . . # #
|
||||||
|
# $ *$* * #
|
||||||
|
### .$@$. ###
|
||||||
|
# * *$* $ #
|
||||||
|
# # . . . # #
|
||||||
|
# * $ * * #
|
||||||
|
### # # # ###
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
#############
|
||||||
|
#. # .#
|
||||||
|
# $ $#$ $ #
|
||||||
|
# *** *** #
|
||||||
|
# * . . * #
|
||||||
|
# $*.***.*$ #
|
||||||
|
### *@* ###
|
||||||
|
# $*.***.*$ #
|
||||||
|
# * . . * #
|
||||||
|
# *** *** #
|
||||||
|
# $ $#$ $ #
|
||||||
|
#. # .#
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
####
|
||||||
|
# # #####
|
||||||
|
# ######## @#
|
||||||
|
# * * * * #
|
||||||
|
## * * * *###
|
||||||
|
#* * * * #
|
||||||
|
# * * * *#
|
||||||
|
#* * * * #
|
||||||
|
# * * * *#
|
||||||
|
#* * * * #
|
||||||
|
# * * * *#
|
||||||
|
#. * * * ##
|
||||||
|
# $ * * * #
|
||||||
|
########## #
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#####
|
||||||
|
##### #####
|
||||||
|
# # . # #
|
||||||
|
# $ $.$.$ $ #
|
||||||
|
# *.$.$.* #
|
||||||
|
###$.$.$.$.$###
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# .$.$.@.$.$. #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
###$.$.$.$.$###
|
||||||
|
# *.$.$.* #
|
||||||
|
# $ $.$.$ $ #
|
||||||
|
# # . # #
|
||||||
|
##### #####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# ####### #
|
||||||
|
# # # # # #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
###.$.$.$.$.###
|
||||||
|
# $.$ . $.$ #
|
||||||
|
# .$ $. #
|
||||||
|
# $.*.+.*.$ #
|
||||||
|
# .$ $. #
|
||||||
|
# $.$ * $.$ #
|
||||||
|
###.$.$.$.$.###
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# # # # # #
|
||||||
|
# ####### #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
###############
|
||||||
|
# # # #
|
||||||
|
# .$.$. .$.$. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
##.$ $. .$ $.##
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# .$@$. #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
##.$ $. .$ $.##
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .$.$. .$.$. #
|
||||||
|
# # # #
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
#############
|
||||||
|
## # ##
|
||||||
|
## # # # # # ##
|
||||||
|
# * * * * * * #
|
||||||
|
# # * * # * * # #
|
||||||
|
# * . * * . * #
|
||||||
|
# # * * # * * # #
|
||||||
|
# * * $ $ * * #
|
||||||
|
### # # @ # # ###
|
||||||
|
# * * $ $ * * #
|
||||||
|
# # * * # * * # #
|
||||||
|
# * . * * . * #
|
||||||
|
# # * * # * * # #
|
||||||
|
# * * * * * * #
|
||||||
|
## # # # # # ##
|
||||||
|
## # ##
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
###################
|
||||||
|
## # ##
|
||||||
|
# $$$ # $$$ @ #
|
||||||
|
# ##.## . ##.## #
|
||||||
|
# $##.##$ $##.##$ #
|
||||||
|
# $.....$.$.....$ #
|
||||||
|
# $##.##$ $##.##$ #
|
||||||
|
# ##.## . ##.## #
|
||||||
|
# $$$ # $$$ #
|
||||||
|
###. . .###. . .###
|
||||||
|
# $$$ # $$$ #
|
||||||
|
# ##.## . ##.## #
|
||||||
|
# $##.##$ $##.##$ #
|
||||||
|
# $.....$.$.....$ #
|
||||||
|
# $##.##$ $##.##$ #
|
||||||
|
# ##.## . ##.## #
|
||||||
|
# $$$ # $$$ #
|
||||||
|
## # ##
|
||||||
|
###################
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
#########
|
||||||
|
# #
|
||||||
|
##$ .$. $##
|
||||||
|
#### .* *. ####
|
||||||
|
## $*.$#$.*$ ##
|
||||||
|
## .. # .. ##
|
||||||
|
####$..$$ # $$..$####
|
||||||
|
# $ *.$# $#$ #$.* $ #
|
||||||
|
# .. $ #.#.# $ .. #
|
||||||
|
# .*$ $. .$ $*. #
|
||||||
|
# $ ##### # ##### $ #
|
||||||
|
# .*$ $. @ .$ $*. #
|
||||||
|
# .. $ #.#.# $ .. #
|
||||||
|
# $ *.$# $#$ #$.* $ #
|
||||||
|
####$..$$ # $$..$####
|
||||||
|
## .. # .. ##
|
||||||
|
## $*.$#$.*$ ##
|
||||||
|
#### .* *. ####
|
||||||
|
##$ .$. $##
|
||||||
|
# #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
######### #########
|
||||||
|
## # ##### # ##
|
||||||
|
##.$.$. # $.$.$ # .$.$.##
|
||||||
|
# $.$.$ # .$ $. # $.$.$ #
|
||||||
|
# .$ $. #.$ $ $.# .$ $. #
|
||||||
|
# $.$.$ # .$ $. # $.$.$ #
|
||||||
|
##.$.$.## $.$.$ ##.$.$.##
|
||||||
|
# # . # #
|
||||||
|
# ##### ### ### ##### #
|
||||||
|
# . # . . # . #
|
||||||
|
##$.$.$ # $.*.$ # $.$.$##
|
||||||
|
#.$ $. #..$ $..# .$ $.#
|
||||||
|
#$ $ $. * @ * .$ $ $#
|
||||||
|
#.$ $. #..$ $..# .$ $.#
|
||||||
|
##$.$.$ # $.*.$ # $.$.$##
|
||||||
|
# . # . . # . #
|
||||||
|
# ##### ### ### ##### #
|
||||||
|
# # . # #
|
||||||
|
##.$.$.## $.$.$ ##.$.$.##
|
||||||
|
# $.$.$ # .$ $. # $.$.$ #
|
||||||
|
# .$ $. #.$ $ $.# .$ $. #
|
||||||
|
# $.$.$ # .$ $. # $.$.$ #
|
||||||
|
##.$.$. # $.$.$ # .$.$.##
|
||||||
|
## # ##### # ##
|
||||||
|
######### #########
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
####
|
||||||
|
### #
|
||||||
|
# #
|
||||||
|
##### #* ##
|
||||||
|
# $ # ######
|
||||||
|
# # $.# #
|
||||||
|
### #$.$#*#### #
|
||||||
|
## #.$.### # #
|
||||||
|
## ##$. # # #
|
||||||
|
## ## . #* # #
|
||||||
|
## # # #### ## #
|
||||||
|
## # $. # * # #
|
||||||
|
####### .##$## # #
|
||||||
|
# # ##$##. #######
|
||||||
|
# # * # .$ # ##
|
||||||
|
# ## #### # # @##
|
||||||
|
# # *# . ## ##
|
||||||
|
# # # .$## ##
|
||||||
|
# # ###.$.# ##
|
||||||
|
# ####*#$.$# ###
|
||||||
|
# #.$ # #
|
||||||
|
###### # $ #
|
||||||
|
## *# #####
|
||||||
|
# #
|
||||||
|
# ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
#######
|
||||||
|
## # #
|
||||||
|
## $.$ #
|
||||||
|
# .$.$#####
|
||||||
|
# $. .$.$ #
|
||||||
|
##.$. .$.$ #
|
||||||
|
# $.$. .$.$#####
|
||||||
|
# $.$. .$.$ #
|
||||||
|
# $.$. .$.$ #
|
||||||
|
#####$.$. .$.$#####
|
||||||
|
# $.$. .$.$ #
|
||||||
|
# $.$. .$.$ #
|
||||||
|
#####$.$.@.$.$#####
|
||||||
|
# $.$. .$.$ #
|
||||||
|
# $.$. .$.$ #
|
||||||
|
#####$.$. .$.$#####
|
||||||
|
# $.$. .$.$ #
|
||||||
|
# $.$. .$.$ #
|
||||||
|
#####$.$. .$.$ #
|
||||||
|
# $.$. .$.##
|
||||||
|
# $.$. .$ #
|
||||||
|
#####$.$. #
|
||||||
|
# $.$ ##
|
||||||
|
# # ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
#########
|
||||||
|
# * * #
|
||||||
|
# . #
|
||||||
|
### # # ###
|
||||||
|
# $ # # $ #
|
||||||
|
# $ # # $ #
|
||||||
|
# ## ## #
|
||||||
|
##### ## ## #####
|
||||||
|
#### #.$.# ####
|
||||||
|
# #$$ # . $ . # $$# #
|
||||||
|
# ###.*.#.*.### #
|
||||||
|
#* #### . .$ $. . #### *#
|
||||||
|
# . $$# @ #$$ . #
|
||||||
|
#* #### . .$ $. . #### *#
|
||||||
|
# ###.*.#.*.### #
|
||||||
|
# #$$ # . $ . # $$# #
|
||||||
|
#### #.$.# ####
|
||||||
|
##### ## ## #####
|
||||||
|
# ## ## #
|
||||||
|
# $ # # $ #
|
||||||
|
# $ # # $ #
|
||||||
|
### # # ###
|
||||||
|
# . #
|
||||||
|
# * * #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
#########
|
||||||
|
# * * #
|
||||||
|
# #
|
||||||
|
### # # ###
|
||||||
|
# $ # # $ #
|
||||||
|
# $ # # $ #
|
||||||
|
# ## ## #
|
||||||
|
### # # ###
|
||||||
|
# # $ ## ## $ # #
|
||||||
|
# $ # # $ #
|
||||||
|
#### ## ## ####
|
||||||
|
##### #.## ##.# #####
|
||||||
|
#### #$$ . # # . $$# ####
|
||||||
|
# #$$ # .. .. # $$# #
|
||||||
|
# ### ###. .#. .### ### #
|
||||||
|
#* #### ### .. .. ### #### *#
|
||||||
|
# # @ # #
|
||||||
|
#* #### ### .. .. ### #### *#
|
||||||
|
# ### ###. .#. .### ### #
|
||||||
|
# #$$ # .. .. # $$# #
|
||||||
|
#### #$$ . # # . $$# ####
|
||||||
|
##### #.## ##.# #####
|
||||||
|
#### ## ## ####
|
||||||
|
# $ # # $ #
|
||||||
|
# # $ ## ## $ # #
|
||||||
|
### # # ###
|
||||||
|
# ## ## #
|
||||||
|
# $ # # $ #
|
||||||
|
# $ # # $ #
|
||||||
|
### # # ###
|
||||||
|
# #
|
||||||
|
# * * #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
###
|
||||||
|
### ###
|
||||||
|
## $$ $$ ##
|
||||||
|
## $$.#...#.$$ ##
|
||||||
|
# $ #..$$ $$..# $ #
|
||||||
|
# #.*$ $ $ $*.# #
|
||||||
|
# ..$ .#...#. $.. #
|
||||||
|
#$#. .#.*$$ $$*.#. .#$#
|
||||||
|
# .$. .$ $ $. .$. #
|
||||||
|
#$#* #.. $.#.#.$ ..# *#$#
|
||||||
|
# $.$ .$ #.$ $.# $. $.$ #
|
||||||
|
# .. .* $. # # .$ *. .. #
|
||||||
|
#$#$ #$ .$ * * * $. $# $#$#
|
||||||
|
# $.$$.$ # # * * # # $.$$.$ #
|
||||||
|
# . . $. * @ * .$ . . #
|
||||||
|
# $.$$.$ # # * * # # $.$$.$ #
|
||||||
|
#$#$ #$ .$ * * * $. $# $#$#
|
||||||
|
# .. .* $. # # .$ *. .. #
|
||||||
|
# $.$ .$ #.$ $.# $. $.$ #
|
||||||
|
#$#* #.. $.#.#.$ ..# *#$#
|
||||||
|
# .$. .$ $ $. .$. #
|
||||||
|
#$#. .#.*$$ $$*.#. .#$#
|
||||||
|
# ..$ .#...#. $.. #
|
||||||
|
# #.*$ $ $ $*.# #
|
||||||
|
# $ #..$$ $$..# $ #
|
||||||
|
## $$.#...#.$$ ##
|
||||||
|
## $$ $$ ##
|
||||||
|
### ###
|
||||||
|
###
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# * #
|
||||||
|
# * * #
|
||||||
|
# * $ * #
|
||||||
|
## * $#$ * ##
|
||||||
|
# . * $ * . #
|
||||||
|
# * . * * . * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * $ * . . * $ * #
|
||||||
|
# * $#$ * @ * $#$ * #
|
||||||
|
# * $ * . . * $ * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * . * * . * #
|
||||||
|
# . * $ * . #
|
||||||
|
## * $#$ * ##
|
||||||
|
# * $ * #
|
||||||
|
# * * #
|
||||||
|
# * #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
# # #
|
||||||
|
# * #
|
||||||
|
# * * #
|
||||||
|
# * $ * #
|
||||||
|
## * $#$ * ##
|
||||||
|
# . * $ * . #
|
||||||
|
# * . * * . * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * $ * . * $ * #
|
||||||
|
## * $#$ * # * $#$ * ##
|
||||||
|
# . * $ * * * $ * . #
|
||||||
|
# * . * * . * . * * . * #
|
||||||
|
# * * . * .#* *#. * . * * #
|
||||||
|
# * $ * * $ * * $ * #
|
||||||
|
# #* $#$ *.#** $@$ **#.* $#$ *# #
|
||||||
|
# * $ * * $ * * $ * #
|
||||||
|
# * * . * .#* *#. * . * * #
|
||||||
|
# * . * * . * . * * . * #
|
||||||
|
# . * $ * * * $ * . #
|
||||||
|
## * $#$ * # * $#$ * ##
|
||||||
|
# * $ * . * $ * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * . * * . * #
|
||||||
|
# . * $ * . #
|
||||||
|
## * $#$ * ##
|
||||||
|
# * $ * #
|
||||||
|
# * * #
|
||||||
|
# * #
|
||||||
|
# # #
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
# # #
|
||||||
|
# * #
|
||||||
|
# * * #
|
||||||
|
# * $ * #
|
||||||
|
## * $#$ * ##
|
||||||
|
# . * $ * . #
|
||||||
|
# * . * * . * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * $ * # * $ * #
|
||||||
|
## * $#$ * * $#$ * ##
|
||||||
|
# . * $ * # * $ * . #
|
||||||
|
# * . * * . * . * * . * #
|
||||||
|
# * * . * . * * . * . * * #
|
||||||
|
# * $ * # * $ * # * $ * #
|
||||||
|
## * $#$ *# #* $#$ *# #* $#$ * ##
|
||||||
|
# . * $ * # * $ * # * $ * . #
|
||||||
|
# * . * * . * . * * . * . * * . * #
|
||||||
|
# * * . * . * * . * . * * . * . * * #
|
||||||
|
# * $ * * $ * . . * $ * * $ * #
|
||||||
|
# #* $#$ *# #* $#$ * @ * $#$ *# #* $#$ *# #
|
||||||
|
# * $ * * $ * . . * $ * * $ * #
|
||||||
|
# * * . * . * * . * . * * . * . * * #
|
||||||
|
# * . * * . * . * * . * . * * . * #
|
||||||
|
# . * $ * # * $ * # * $ * . #
|
||||||
|
## * $#$ *# #* $#$ *# #* $#$ * ##
|
||||||
|
# * $ * # * $ * # * $ * #
|
||||||
|
# * * . * . * * . * . * * #
|
||||||
|
# * . * * . * . * * . * #
|
||||||
|
# . * $ * # * $ * . #
|
||||||
|
## * $#$ * * $#$ * ##
|
||||||
|
# * $ * # * $ * #
|
||||||
|
# * * . * . * * #
|
||||||
|
# * . * * . * #
|
||||||
|
# . * $ * . #
|
||||||
|
## * $#$ * ##
|
||||||
|
# * $ * #
|
||||||
|
# * * #
|
||||||
|
# * #
|
||||||
|
# # #
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
|
909
maps_suites/Sasquatch_VI_50.xsb
Normal file
909
maps_suites/Sasquatch_VI_50.xsb
Normal file
|
@ -0,0 +1,909 @@
|
||||||
|
; Sasquatch VI (50 puzzles, released October, 2002)
|
||||||
|
; This set is a symmetrical feast. Forty of these levels involve some form of symmetry.
|
||||||
|
; There is also a sequence of levels where I explore the possibilities of working
|
||||||
|
; within squares of various sizes.
|
||||||
|
; This set contains several puzzles which exceed the 31x18 size limit of my first sets.
|
||||||
|
;
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
#####
|
||||||
|
## ## ####
|
||||||
|
# # # # #
|
||||||
|
# *$* ###$ ##
|
||||||
|
# .$. ... $ ##
|
||||||
|
# *$* ### ##
|
||||||
|
# # # # @#
|
||||||
|
## ## #######
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
##########
|
||||||
|
# # #
|
||||||
|
# #$$$$$ #
|
||||||
|
# .#.# #
|
||||||
|
# ... ##
|
||||||
|
### @ ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
########
|
||||||
|
## ##
|
||||||
|
# *..* #
|
||||||
|
# #$ $#@#
|
||||||
|
# **** #
|
||||||
|
## ###
|
||||||
|
### ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
#######
|
||||||
|
### # #
|
||||||
|
# .$$. ##
|
||||||
|
# * *@ #
|
||||||
|
## .$$. #
|
||||||
|
# # ###
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
####
|
||||||
|
##### ####
|
||||||
|
## # $ #
|
||||||
|
# .# # #* #
|
||||||
|
## * @ * ##
|
||||||
|
# *# # #. #
|
||||||
|
# $ # ##
|
||||||
|
#### #####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
########
|
||||||
|
# #
|
||||||
|
### ## # ####
|
||||||
|
# *.** .* #
|
||||||
|
# $ $# @ #
|
||||||
|
####### ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
########
|
||||||
|
## # #
|
||||||
|
# # # #
|
||||||
|
# #
|
||||||
|
# ## ##
|
||||||
|
## .#
|
||||||
|
#####.#
|
||||||
|
# #.#
|
||||||
|
#### # ###
|
||||||
|
## #
|
||||||
|
# ##$##. #
|
||||||
|
# $ $ #####
|
||||||
|
# $ @ #
|
||||||
|
## ####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
###########
|
||||||
|
# @ #
|
||||||
|
# ###$### #
|
||||||
|
# # .$. # #
|
||||||
|
# #$ . $# #
|
||||||
|
# $. .$ #
|
||||||
|
###$. .$###
|
||||||
|
# . #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
#######
|
||||||
|
# #
|
||||||
|
# $ $ ####
|
||||||
|
### ## . #
|
||||||
|
# #. $ #
|
||||||
|
# @ .#*###
|
||||||
|
### #.. #
|
||||||
|
## $ # #
|
||||||
|
# $ $ #
|
||||||
|
# ##. #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
#######$ #
|
||||||
|
# . $ $ #
|
||||||
|
# . .. ##
|
||||||
|
##$##+#$#
|
||||||
|
# . .. ####
|
||||||
|
##. $ $ $ #
|
||||||
|
# ##### #
|
||||||
|
# $# #####
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
# ##
|
||||||
|
### #
|
||||||
|
# # ####
|
||||||
|
# . @ # ###
|
||||||
|
##.# # #
|
||||||
|
#.# #$$$$ #
|
||||||
|
#.**$ #
|
||||||
|
###. ## #
|
||||||
|
# ## ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
####
|
||||||
|
###### #
|
||||||
|
# #$.#
|
||||||
|
## ## # #
|
||||||
|
# $ $$$$ #
|
||||||
|
##.*.*.*..#
|
||||||
|
# @ #
|
||||||
|
# #######
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
####
|
||||||
|
#### #
|
||||||
|
# #
|
||||||
|
#### ** #
|
||||||
|
## # # #
|
||||||
|
# *** ####
|
||||||
|
##$ ..... #
|
||||||
|
# $ # $ $ #
|
||||||
|
# ####$ ##
|
||||||
|
##### # @ #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
#####
|
||||||
|
# @ #
|
||||||
|
### # #####
|
||||||
|
# $ ## #
|
||||||
|
# . ## #####
|
||||||
|
#### ## $$ $ #
|
||||||
|
# $ # #
|
||||||
|
# . ##$ ####
|
||||||
|
#### ### #
|
||||||
|
# $ # #
|
||||||
|
# . # #
|
||||||
|
#### ### ###
|
||||||
|
# $ #
|
||||||
|
# .....# #
|
||||||
|
####### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
####
|
||||||
|
## ##
|
||||||
|
# $ ##
|
||||||
|
##### * #
|
||||||
|
## . * * #
|
||||||
|
## * * $* .#
|
||||||
|
# * *$..$* ###
|
||||||
|
# $ *$.##. ##
|
||||||
|
## .##.$* $ #
|
||||||
|
### *$..$* * #
|
||||||
|
#. *$ * * ##
|
||||||
|
# * *@ . ##
|
||||||
|
# * #####
|
||||||
|
## $ #
|
||||||
|
## ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
########
|
||||||
|
## ####
|
||||||
|
##. # #
|
||||||
|
# *$$ ######
|
||||||
|
# $. ##
|
||||||
|
#####*###. ##
|
||||||
|
# * * #
|
||||||
|
# #.$@$.# #
|
||||||
|
# * * #
|
||||||
|
## .###*#####
|
||||||
|
## .$ #
|
||||||
|
###### $$* #
|
||||||
|
# # .##
|
||||||
|
#### ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
##### ####
|
||||||
|
# ##### #
|
||||||
|
# $ $ #
|
||||||
|
## ## ### #
|
||||||
|
# . # ##
|
||||||
|
#$#....#*#
|
||||||
|
########### # .$ # #
|
||||||
|
# # ## ### ## ##
|
||||||
|
# $ $ # $ $ #
|
||||||
|
## ## ### ## # #
|
||||||
|
# # $. # ###########
|
||||||
|
#*#....#*#
|
||||||
|
## # . ###
|
||||||
|
# ###@##$ #
|
||||||
|
# $ $ #
|
||||||
|
# ###### #
|
||||||
|
#### #####
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
#### #### # #### ####
|
||||||
|
# #### ####### #### #
|
||||||
|
# .$. # .$. # .$. # .$. #
|
||||||
|
#. $ . . $ . . $ . . $ .#
|
||||||
|
#$$#$$*$$#$$@$$#$$*$$#$$#
|
||||||
|
#. $ . . $ . . $ . . $ .#
|
||||||
|
# .$. # .$. # .$. # .$. #
|
||||||
|
# #### ####### #### #
|
||||||
|
#### #### # #### ####
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
########
|
||||||
|
## # ##
|
||||||
|
## $.$ ##
|
||||||
|
## $.$.$ ##
|
||||||
|
## .$.$.###
|
||||||
|
# .$.$.$ ##
|
||||||
|
# $.$ $. ##
|
||||||
|
##.$.$.$.##
|
||||||
|
# $.$.$.$ #
|
||||||
|
# . . #
|
||||||
|
#####@#####
|
||||||
|
# #
|
||||||
|
#### ###
|
||||||
|
## # ##
|
||||||
|
## $.$ ##
|
||||||
|
## $.$.$ ##
|
||||||
|
###.$.$. ##
|
||||||
|
## $.$.$. #
|
||||||
|
## .$ $.$ #
|
||||||
|
##.$.$.$.##
|
||||||
|
# $.$.$.$ #
|
||||||
|
# . . #
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
###########
|
||||||
|
## . ##
|
||||||
|
## .$.$. ##
|
||||||
|
## $*$*$ ##
|
||||||
|
#..$@$..#
|
||||||
|
## $*$*$ ##
|
||||||
|
## .$.$. ##
|
||||||
|
## . ##
|
||||||
|
###########
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
##########
|
||||||
|
# ## # #
|
||||||
|
# # * ####
|
||||||
|
###$ .$ ##
|
||||||
|
# . @ * #
|
||||||
|
# * . #
|
||||||
|
## $. $###
|
||||||
|
#### * # #
|
||||||
|
# # ## #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
##########
|
||||||
|
# ## #
|
||||||
|
# $. .$ #
|
||||||
|
# .**$*. #
|
||||||
|
## $ @* ##
|
||||||
|
## * $ ##
|
||||||
|
# .*$**. #
|
||||||
|
# $. .$ #
|
||||||
|
# ## #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
##########
|
||||||
|
### ##
|
||||||
|
# $.*.*$##
|
||||||
|
# *#$ #. #
|
||||||
|
# . @$* #
|
||||||
|
# *$ . #
|
||||||
|
# .# $#* #
|
||||||
|
##$*.*.$ #
|
||||||
|
## ###
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
##########
|
||||||
|
## ####
|
||||||
|
##.$.$.$ #
|
||||||
|
##$.$.$. #
|
||||||
|
# .$ @.$ #
|
||||||
|
# $. $. #
|
||||||
|
# .$.$.$##
|
||||||
|
# $.$.$.##
|
||||||
|
#### ##
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
##########
|
||||||
|
# $. #
|
||||||
|
# * * #
|
||||||
|
# * ** *$#
|
||||||
|
# * @* .#
|
||||||
|
#. * * #
|
||||||
|
#$* ** * #
|
||||||
|
# * * #
|
||||||
|
# .$ #
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
########
|
||||||
|
## @ ##
|
||||||
|
# #$.$.# #
|
||||||
|
# $.$.$. #
|
||||||
|
# .$ .$ #
|
||||||
|
# $. $. #
|
||||||
|
# .$.$.$ #
|
||||||
|
# #.$.$# #
|
||||||
|
## ##
|
||||||
|
########
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
##########
|
||||||
|
# ##
|
||||||
|
# $.$.$. #
|
||||||
|
# .$.$.$ #
|
||||||
|
# $.##$. #
|
||||||
|
# .$##.$ #
|
||||||
|
# $.$.$. #
|
||||||
|
# .$.$.$ #
|
||||||
|
## @#
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
##########
|
||||||
|
# .$ #
|
||||||
|
# .$.$ #
|
||||||
|
# .$.$.$ #
|
||||||
|
#.$.##$.$#
|
||||||
|
#$.$##.$.#
|
||||||
|
# $.$.$. #
|
||||||
|
# $.$. #
|
||||||
|
# $. @#
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
#######
|
||||||
|
## ## ##
|
||||||
|
##### $###
|
||||||
|
# $ .. # #
|
||||||
|
# *$*.###
|
||||||
|
## .$@$. ##
|
||||||
|
###.*$* #
|
||||||
|
# # .. $ #
|
||||||
|
###$ #####
|
||||||
|
## ## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
#######
|
||||||
|
## ##
|
||||||
|
###$ $###
|
||||||
|
# $.* *.$ #
|
||||||
|
# *.*.* #
|
||||||
|
# *@* #
|
||||||
|
# *.*.* #
|
||||||
|
# $.* *.$ #
|
||||||
|
###$ $###
|
||||||
|
## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
#############
|
||||||
|
##### .$ #
|
||||||
|
#### .$.$ #
|
||||||
|
### .$.$ $ #
|
||||||
|
## .$.$.$.$#
|
||||||
|
# .$.$.$.$.#
|
||||||
|
# .$.$@$.$. #
|
||||||
|
#.$.$.$.$. #
|
||||||
|
#$.$.$.$. ##
|
||||||
|
# $ $.$. ###
|
||||||
|
# $.$. ####
|
||||||
|
# $. #####
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
###### ######
|
||||||
|
# ##### #
|
||||||
|
# # # # #
|
||||||
|
# $.$.$.$ #
|
||||||
|
## .$.$.$. ##
|
||||||
|
## $.$.$.$ ##
|
||||||
|
##.$.@.$.##
|
||||||
|
## $.$.$.$ ##
|
||||||
|
## .$.$.$. ##
|
||||||
|
# $.$.$.$ #
|
||||||
|
# # # # #
|
||||||
|
# ##### #
|
||||||
|
###### ######
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
###########
|
||||||
|
## # ##
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$. .$. #
|
||||||
|
##$.$ @ $.$##
|
||||||
|
# .$. .$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ #
|
||||||
|
## # ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
###############
|
||||||
|
# # #
|
||||||
|
# #.$.$.$.$.# #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
##.$.$ @ $.$.##
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# #.$.$.$.$.# #
|
||||||
|
# # #
|
||||||
|
###############
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# # # # #
|
||||||
|
###.$#####$.###
|
||||||
|
# $ .$ $. $ #
|
||||||
|
# . $. .$ . #
|
||||||
|
###$.## ##.$###
|
||||||
|
#.$# #$.#
|
||||||
|
## @ ##
|
||||||
|
#$.# #.$#
|
||||||
|
###.$## ##$.###
|
||||||
|
# $ .$ $. $ #
|
||||||
|
# . $. .$ . #
|
||||||
|
###$.#####.$###
|
||||||
|
# # # # #
|
||||||
|
#### ####
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### ###
|
||||||
|
# # ###
|
||||||
|
## # $.# #
|
||||||
|
# $.#.$.$# #
|
||||||
|
## #.$.$ $. ##
|
||||||
|
# .$ $.$.# #
|
||||||
|
# #$.$.@.$.$# #
|
||||||
|
# #.$.$ $. #
|
||||||
|
## .$ $.$.# ##
|
||||||
|
# #$.$.#.$ #
|
||||||
|
# #.$ # ##
|
||||||
|
### # #
|
||||||
|
### ####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
#######
|
||||||
|
### ###
|
||||||
|
## # ##
|
||||||
|
# $#$.$.#.$ #
|
||||||
|
## .$.#.$.$# ##
|
||||||
|
# #.$.$.$.$ #
|
||||||
|
# .$.$ $.#. #
|
||||||
|
# #$.$ @ $.$# #
|
||||||
|
# .#.$ $.$. #
|
||||||
|
# $.$.$.$.# #
|
||||||
|
## #$.$.#.$. ##
|
||||||
|
# $.#.$.$#$ #
|
||||||
|
## # ##
|
||||||
|
### ###
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
#######
|
||||||
|
###### ######
|
||||||
|
## $. .$ ##
|
||||||
|
# $ $.$#$.$ $ #
|
||||||
|
# #.$.$.$.# #
|
||||||
|
## $. .$.$. .$ ##
|
||||||
|
##$.$.#.$.#.$.$##
|
||||||
|
# .$.$. .$.$. #
|
||||||
|
# #$.$ @ $.$# #
|
||||||
|
# .$.$. .$.$. #
|
||||||
|
##$.$.#.$.#.$.$##
|
||||||
|
## $. .$.$. .$ ##
|
||||||
|
# #.$.$.$.# #
|
||||||
|
# $ $.$#$.$ $ #
|
||||||
|
## $. .$ ##
|
||||||
|
###### ######
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
####
|
||||||
|
# ##
|
||||||
|
## $####
|
||||||
|
###. . #
|
||||||
|
#### $ # $ #
|
||||||
|
# # . .####
|
||||||
|
## $####$ # ##
|
||||||
|
###. . $. $# $####
|
||||||
|
# $ # $ **.#. . #
|
||||||
|
# . .#.** $ # $ #
|
||||||
|
####$ #$ .$ . .###
|
||||||
|
## # $####$ ##
|
||||||
|
####. . # #
|
||||||
|
# $ # $ ####
|
||||||
|
# . .###
|
||||||
|
####$ ##
|
||||||
|
## @#
|
||||||
|
####
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
################ #
|
||||||
|
# $ $ $ $ $ $$#
|
||||||
|
# @ $ *.*.*. #
|
||||||
|
# # ..* $... $#
|
||||||
|
#####$... $ $..* #
|
||||||
|
# *.$. $. *.$#
|
||||||
|
#$.$ $.. $ * #
|
||||||
|
# * $ ..$ $.$#
|
||||||
|
#$.* .$ .$.* #
|
||||||
|
# *..$ $ ...$#
|
||||||
|
#$ ...$ *.. #####
|
||||||
|
# .*.*.* $# #
|
||||||
|
#$$ $ $ $ $ $ #
|
||||||
|
# ################
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
# . #
|
||||||
|
# $.$ #
|
||||||
|
# .$. #
|
||||||
|
# $.$ $.$ #
|
||||||
|
# $. . . .$ #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# . . # # . . #
|
||||||
|
# $.$.$# $ #$.$.$ #
|
||||||
|
# ..$ $@$ $.. #
|
||||||
|
# $.$.$# $ #$.$.$ #
|
||||||
|
# . . # # . . #
|
||||||
|
# $.$.$ $.$.$ #
|
||||||
|
# $. . . .$ #
|
||||||
|
# $.$ $.$ #
|
||||||
|
# .$. #
|
||||||
|
# $.$ #
|
||||||
|
# . #
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
# # #
|
||||||
|
# # #
|
||||||
|
# # #
|
||||||
|
# $ #
|
||||||
|
#.*********.#
|
||||||
|
# * * #
|
||||||
|
# * ******* * #
|
||||||
|
# * * * * #
|
||||||
|
# * * *** * * #
|
||||||
|
# ###$* * *@* * *$### #
|
||||||
|
# * * *** * * #
|
||||||
|
# * * * * #
|
||||||
|
# * ******* * #
|
||||||
|
# * * #
|
||||||
|
#.*********.#
|
||||||
|
# $ #
|
||||||
|
# # #
|
||||||
|
# # #
|
||||||
|
# # #
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
# # #
|
||||||
|
###################
|
||||||
|
# # # # #
|
||||||
|
# # # # # # #
|
||||||
|
# **$***$***$** #
|
||||||
|
# * . . * #
|
||||||
|
####$ #### #### $####
|
||||||
|
# * ## #.# ## * #
|
||||||
|
# *.# ## ## #.* #
|
||||||
|
# * ### ### * #
|
||||||
|
####$ . @ . $####
|
||||||
|
# * ### ### * #
|
||||||
|
# *.# ## ## #.* #
|
||||||
|
# * ## #.# ## * #
|
||||||
|
####$ #### #### $####
|
||||||
|
# * . . * #
|
||||||
|
# **$***$***$** #
|
||||||
|
# # # # # # #
|
||||||
|
# # # # #
|
||||||
|
###################
|
||||||
|
# # #
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
##### ##### #####
|
||||||
|
# # # # # #
|
||||||
|
# $.$$$.$ $.$$$.$ #
|
||||||
|
###.#...#...#...#.###
|
||||||
|
# $.$ $.$$$.$ $.$ #
|
||||||
|
# .$ $. .$ $. #
|
||||||
|
# $.$ $.$$$.$ $.$ #
|
||||||
|
###.#...#...#...#.###
|
||||||
|
# $.$$$.$ $.$$$.$ #
|
||||||
|
# $. .$@$. .$ #
|
||||||
|
# $.$$$.$ $.$$$.$ #
|
||||||
|
###.#...#...#...#.###
|
||||||
|
# $.$ $.$$$.$ $.$ #
|
||||||
|
# .$ $. .$ $. #
|
||||||
|
# $.$ $.$$$.$ $.$ #
|
||||||
|
###.#...#...#...#.###
|
||||||
|
# $.$$$.$ $.$$$.$ #
|
||||||
|
# # # # # #
|
||||||
|
##### ##### #####
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
#######################
|
||||||
|
## # * # ##
|
||||||
|
# # # # # # # #
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
###.$.$.#.$.$.#.$.$.###
|
||||||
|
# $. .$ $. .$ $. .$ #
|
||||||
|
# #.$.$.#.$.$.#.$.$.# #
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
# # # # # # # #
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
# #.$.$.#.$.$.#.$.$.# #
|
||||||
|
#* $. .$ $.@.$ $. .$ *#
|
||||||
|
# #.$.$.#.$.$.#.$.$.# #
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
# # # # # # # #
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
# #.$.$.#.$.$.#.$.$.# #
|
||||||
|
# $. .$ $. .$ $. .$ #
|
||||||
|
###.$.$.#.$.$.#.$.$.###
|
||||||
|
# $.$.$ $.$.$ $.$.$ #
|
||||||
|
# # # # # # # #
|
||||||
|
## # * # ##
|
||||||
|
#######################
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
###### ###########
|
||||||
|
## #######. . . . ##
|
||||||
|
##.$.$.$ .$.$.$.$.$.##
|
||||||
|
# $.$.$.#####$.$.$.$.$.$ #
|
||||||
|
# .$.$.$# # $.$.$.$.$. #
|
||||||
|
#.$.$. # $ ####.$.$ #
|
||||||
|
# .$.##### ### ## # .$. #
|
||||||
|
#.$.$# # # $ $ # $.$##
|
||||||
|
# .$.# $ $ # # # #### #
|
||||||
|
#.$.$## ## # # ## # #
|
||||||
|
# .$. # ###### $ $ # #
|
||||||
|
#.$.$ $# # # # # #
|
||||||
|
##.$ # # ## ##### ## #
|
||||||
|
# ## ##### ## # # $.##
|
||||||
|
# # # # # #$ $.$.#
|
||||||
|
# # $ $ ###### # .$. #
|
||||||
|
# # ## # # ## ##$.$.#
|
||||||
|
# #### # # # $ $ #.$. #
|
||||||
|
##$.$ # $ $ # # #$.$.#
|
||||||
|
# .$. # ## ### #####.$. #
|
||||||
|
# $.$.#### $ # .$.$.#
|
||||||
|
# .$.$.$.$.$ # #$.$.$. #
|
||||||
|
# $.$.$.$.$.$#####.$.$.$ #
|
||||||
|
##.$.$.$.$.$. @ $.$.$.##
|
||||||
|
## . . . .####### ##
|
||||||
|
########### ######
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
###### ##### ##### ######
|
||||||
|
## ############### ##
|
||||||
|
# $ $ $.$ $ $.$ $ $.$ $ $ #
|
||||||
|
# $.$ . $.$ . $.$ . $.$ #
|
||||||
|
# $.$.*.*.$.*.*.$.*.*.$.$ #
|
||||||
|
# $.$ . $.$ . $.$ . $.$ #
|
||||||
|
##$ * $.$ $ $#$ $ $.$ * $##
|
||||||
|
#.....#.....#.....#.....#
|
||||||
|
##$ * $.$ $ $#$ $ $.$ * $##
|
||||||
|
## $.$ . $.$ . $.$ . $.$ ##
|
||||||
|
##$.$.$.$.$.*.*.$.$.$.$.$##
|
||||||
|
## $.$ . $.$ . $.$ . $.$ ##
|
||||||
|
##$ * $.$ * * * * $.$ * $##
|
||||||
|
#....###... @ ...###....#
|
||||||
|
##$ * $.$ * * * * $.$ * $##
|
||||||
|
## $.$ . $.$ . $.$ . $.$ ##
|
||||||
|
##$.$.$.$.$.*.*.$.$.$.$.$##
|
||||||
|
## $.$ . $.$ . $.$ . $.$ ##
|
||||||
|
##$ * $.$ $ $#$ $ $.$ * $##
|
||||||
|
#.....#.....#.....#.....#
|
||||||
|
##$ * $.$ $ $#$ $ $.$ * $##
|
||||||
|
# $.$ . $.$ . $.$ . $.$ #
|
||||||
|
# $.$.*.*.$.*.*.$.*.*.$.$ #
|
||||||
|
# $.$ . $.$ . $.$ . $.$ #
|
||||||
|
# $ $ $.$ $ $.$ $ $.$ $ $ #
|
||||||
|
## ############### ##
|
||||||
|
###### ##### ##### ######
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
# # # #
|
||||||
|
##########################
|
||||||
|
## # # # # ##
|
||||||
|
# $.$.#.$.$#$.$.#.$.$#$.$. #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
#### # ### # ### ####
|
||||||
|
# .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. #
|
||||||
|
#### ### # ### # ####
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. #
|
||||||
|
# .$.$ $.$. . @$ $.$. .$.$ #
|
||||||
|
# $.$. .$.$ $ . .$.$ $.$. #
|
||||||
|
# .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
#### # ### # ### ###
|
||||||
|
# .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. #
|
||||||
|
#### ### # ### # ####
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# .$.$#$.$.#.$.$#$.$.#.$.$ #
|
||||||
|
## # # # # ##
|
||||||
|
##########################
|
||||||
|
# # # #
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
## ## ## ##
|
||||||
|
##.$.$.## ##.$.$.##
|
||||||
|
##$.$.$## ##$.$.$##
|
||||||
|
# .$.$. # # .$.$. #
|
||||||
|
# $.$.$ # # $.$.$ #
|
||||||
|
# .$.$. # # .$.$. #
|
||||||
|
###### $.$.$ ### $.$.$ ######
|
||||||
|
### .$.$. .$.$. ###
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
# .$.$.$.$ $.$.$.$ $.$.$.$. #
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
### .$.$.# . #.$.$. ###
|
||||||
|
###### $.$.$ #*# $.$.$ ######
|
||||||
|
# .$.$..*@*..$.$. #
|
||||||
|
###### $.$.$ #*# $.$.$ ######
|
||||||
|
### .$.$.# . #.$.$. ###
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
# .$.$.$.$ $.$.$.$ $.$.$.$. #
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
### .$.$. .$.$. ###
|
||||||
|
###### $.$.$ ### $.$.$ ######
|
||||||
|
# .$.$. # # .$.$. #
|
||||||
|
# $.$.$ # # $.$.$ #
|
||||||
|
# .$.$. # # .$.$. #
|
||||||
|
##$.$.$## ##$.$.$##
|
||||||
|
##.$.$.## ##.$.$.##
|
||||||
|
## ## ## ##
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
# #
|
||||||
|
##### ######### ######### #####
|
||||||
|
## ### # ### # ### ##
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
##.$.$#$.$. .$.$#$.$. .$.$#$.$.##
|
||||||
|
# # ### # ### # #
|
||||||
|
##.$.$#$.$. .$.$#$.$. .$.$#$.$.##
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
### ### # ### # ### ###
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
##.$.$#$.$. .$.$ $.$. .$.$#$.$.##
|
||||||
|
# # ### @ ### # #
|
||||||
|
##.$.$#$.$. .$.$ $.$. .$.$#$.$.##
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
### ### # ### # ### ###
|
||||||
|
# $.$. .$.$#$.$. .$.$#$.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
##.$.$#$.$. .$.$#$.$. .$.$#$.$.##
|
||||||
|
# # ### # ### # #
|
||||||
|
##.$.$#$.$. .$.$#$.$. .$.$#$.$.##
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
# .$.$ $.$. .$.$ $.$. .$.$ $.$. #
|
||||||
|
# $.$. .$.$ $.$. .$.$ $.$. .$.$ #
|
||||||
|
## ### # ### # ### ##
|
||||||
|
##### ######### ######### #####
|
||||||
|
# #
|
||||||
|
|
871
maps_suites/Sasquatch_V_50.xsb
Normal file
871
maps_suites/Sasquatch_V_50.xsb
Normal file
|
@ -0,0 +1,871 @@
|
||||||
|
; Sasquatch V (50 puzzles, released December, 2001)
|
||||||
|
; Again, a wide variety. This set contains several puzzles which
|
||||||
|
; exceed the 31x18 size limit of my previous sets.
|
||||||
|
|
||||||
|
; 1
|
||||||
|
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
# #
|
||||||
|
# $ #
|
||||||
|
### ###
|
||||||
|
# $ $ #
|
||||||
|
#..@..#
|
||||||
|
# $ #
|
||||||
|
### ##
|
||||||
|
####
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
#####
|
||||||
|
# @####
|
||||||
|
# $. #
|
||||||
|
###$.# #
|
||||||
|
# $.# #
|
||||||
|
# #$. #
|
||||||
|
# ###
|
||||||
|
######
|
||||||
|
|
||||||
|
; 3
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
#### # #
|
||||||
|
# . .# #
|
||||||
|
# . #
|
||||||
|
# .## $##
|
||||||
|
## #$$ #
|
||||||
|
## $@#
|
||||||
|
## ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 4
|
||||||
|
|
||||||
|
#### ####
|
||||||
|
# ### #
|
||||||
|
# # $$ #
|
||||||
|
# $$ # #
|
||||||
|
# # ##
|
||||||
|
### $.# #
|
||||||
|
#..*.@.#
|
||||||
|
## ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 5
|
||||||
|
|
||||||
|
###### ####
|
||||||
|
# ### #
|
||||||
|
# * * #
|
||||||
|
## #***# #
|
||||||
|
# *+* ##
|
||||||
|
## #*$*# ##
|
||||||
|
# # # # #
|
||||||
|
# #
|
||||||
|
# ########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 6
|
||||||
|
|
||||||
|
########
|
||||||
|
## . . #
|
||||||
|
# *$# # #
|
||||||
|
#. #$# ##
|
||||||
|
##* # # #
|
||||||
|
# # * #
|
||||||
|
# $#@ .# #
|
||||||
|
# $ ###
|
||||||
|
## # #
|
||||||
|
########
|
||||||
|
|
||||||
|
; 7
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
#$ #
|
||||||
|
# # ####
|
||||||
|
#### #### #
|
||||||
|
# .. .. #
|
||||||
|
# $*. *.$@##
|
||||||
|
# #$ $#$ #
|
||||||
|
##### # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 8
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
#$ #
|
||||||
|
# # ####
|
||||||
|
### #### #
|
||||||
|
# .. .. ###
|
||||||
|
# $*. *.$@ #
|
||||||
|
## #$ $#$ # #
|
||||||
|
# # # # #
|
||||||
|
# ###### #
|
||||||
|
## ##
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 9
|
||||||
|
|
||||||
|
#######
|
||||||
|
# @ #
|
||||||
|
# ### ##
|
||||||
|
#### # # # #####
|
||||||
|
# ### # # . #
|
||||||
|
# . # # * $$ #
|
||||||
|
# * $$ # # *## ##
|
||||||
|
# *## ## # * #
|
||||||
|
# . # # *## #
|
||||||
|
# #### # . #
|
||||||
|
#### # ####
|
||||||
|
####
|
||||||
|
|
||||||
|
; 10
|
||||||
|
|
||||||
|
########
|
||||||
|
## ##
|
||||||
|
# .#### #
|
||||||
|
# . # #
|
||||||
|
# * $$ # #
|
||||||
|
# *## # #
|
||||||
|
# + # ##
|
||||||
|
# $### #
|
||||||
|
## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 11
|
||||||
|
|
||||||
|
#########
|
||||||
|
## ##
|
||||||
|
# .##### #
|
||||||
|
# . # #
|
||||||
|
# * $$ # #
|
||||||
|
# *## ## #
|
||||||
|
# * # ##
|
||||||
|
# *## # ##
|
||||||
|
# + # #
|
||||||
|
# $### #
|
||||||
|
## ##
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 12
|
||||||
|
|
||||||
|
#######
|
||||||
|
# @ #
|
||||||
|
# $.$ #
|
||||||
|
##.$.##
|
||||||
|
## $ ##
|
||||||
|
# $.$ #
|
||||||
|
# .$. #
|
||||||
|
# .$. #
|
||||||
|
# # #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 13
|
||||||
|
|
||||||
|
#####
|
||||||
|
#### #
|
||||||
|
# $$# #
|
||||||
|
## *..$ #
|
||||||
|
#@ .#. #
|
||||||
|
# $..* ##
|
||||||
|
# #$$ #
|
||||||
|
# ####
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 14
|
||||||
|
|
||||||
|
######
|
||||||
|
####### # ##
|
||||||
|
# ### ## ##
|
||||||
|
# # $.##$ # ##
|
||||||
|
# # *.@.* # #
|
||||||
|
## # $##.$ # #
|
||||||
|
## ## ### #
|
||||||
|
## # #######
|
||||||
|
######
|
||||||
|
|
||||||
|
; 15
|
||||||
|
|
||||||
|
#######
|
||||||
|
# ####
|
||||||
|
# # # . ##
|
||||||
|
# $$$**$$ #
|
||||||
|
#....@....#
|
||||||
|
# $$**$$$ #
|
||||||
|
## . # # #
|
||||||
|
#### #
|
||||||
|
#######
|
||||||
|
|
||||||
|
; 16
|
||||||
|
|
||||||
|
########
|
||||||
|
# # ##
|
||||||
|
##### # ####
|
||||||
|
# $ $$ $ $ #
|
||||||
|
#..........#
|
||||||
|
# $ $ $$ $ #
|
||||||
|
#### # #####
|
||||||
|
## @ # #
|
||||||
|
########
|
||||||
|
|
||||||
|
; 17
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## # #
|
||||||
|
# * #
|
||||||
|
# # ##
|
||||||
|
####### # #
|
||||||
|
# # .$.$.####
|
||||||
|
# # $$.$$ ###
|
||||||
|
# *##..@..##* #
|
||||||
|
### $$.$$ # #
|
||||||
|
####.$.$. # #
|
||||||
|
# # #######
|
||||||
|
## # #
|
||||||
|
# * #
|
||||||
|
# # ##
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 18
|
||||||
|
|
||||||
|
#######
|
||||||
|
## ###
|
||||||
|
### .$###
|
||||||
|
# $$.$ #
|
||||||
|
# . . #
|
||||||
|
## $.$###
|
||||||
|
###$.$ #
|
||||||
|
# . . #
|
||||||
|
# .$$ #
|
||||||
|
###. ###
|
||||||
|
###@ ##
|
||||||
|
######
|
||||||
|
|
||||||
|
; 19
|
||||||
|
|
||||||
|
#######
|
||||||
|
###### ### #
|
||||||
|
### # # $$##.#
|
||||||
|
##### $ $ ### #$ ##.#
|
||||||
|
# $ $ # # .#
|
||||||
|
## # # $ # ### # ## #
|
||||||
|
# $ $ #### # ## #
|
||||||
|
# $#.*##$ # ## ###
|
||||||
|
#.*..... .# ######
|
||||||
|
# .#######
|
||||||
|
## @#
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 20
|
||||||
|
|
||||||
|
###########
|
||||||
|
## ##
|
||||||
|
# ####### #
|
||||||
|
# # # #
|
||||||
|
# # ##### # #
|
||||||
|
## # $# ##
|
||||||
|
#### ## ### .$ #
|
||||||
|
# ###$ .....# #
|
||||||
|
# #$ $ $ # @ #
|
||||||
|
# ### #########
|
||||||
|
##### ####
|
||||||
|
|
||||||
|
; 21
|
||||||
|
|
||||||
|
##############
|
||||||
|
# # # ####
|
||||||
|
# #### # @ . #
|
||||||
|
# $..... # #$ #
|
||||||
|
##$##### # ##. #
|
||||||
|
# ### $ #
|
||||||
|
# ## $ ## ## #
|
||||||
|
## ### $ #####
|
||||||
|
# $ # #####
|
||||||
|
# ####
|
||||||
|
### #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 22
|
||||||
|
|
||||||
|
#####
|
||||||
|
# ###
|
||||||
|
#### ##
|
||||||
|
### #.## ##
|
||||||
|
# $ $ $ $$@ #
|
||||||
|
# # ##.## #
|
||||||
|
## # # . #####
|
||||||
|
# # ...*. #
|
||||||
|
# $### # #
|
||||||
|
# $ ### ###
|
||||||
|
# # ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 23
|
||||||
|
|
||||||
|
######
|
||||||
|
###### #
|
||||||
|
# $ $$ #
|
||||||
|
# $ ## #
|
||||||
|
# $## #$ #
|
||||||
|
# $ $$ # #
|
||||||
|
# .....#$ #
|
||||||
|
##@#.#$ $ #
|
||||||
|
#.....#$ #
|
||||||
|
#...**# #
|
||||||
|
# $ ##
|
||||||
|
#### ###
|
||||||
|
####
|
||||||
|
|
||||||
|
; 24
|
||||||
|
|
||||||
|
########
|
||||||
|
# #
|
||||||
|
###*####.#
|
||||||
|
# $ $ #
|
||||||
|
# #......###
|
||||||
|
# #$ # #
|
||||||
|
# #. #@# # #
|
||||||
|
# $$## #$# #
|
||||||
|
# $ $ #
|
||||||
|
# #########
|
||||||
|
####
|
||||||
|
|
||||||
|
; 25
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
###### # ##
|
||||||
|
# ## * #### ##
|
||||||
|
### $ # ###
|
||||||
|
# #####$# $ # #
|
||||||
|
# $ $ # $$# # #
|
||||||
|
###.#..*......... ##
|
||||||
|
### $# # $ $ # #
|
||||||
|
# $ $## #### #### #
|
||||||
|
# # ## @ # ##
|
||||||
|
# ## ###### ####
|
||||||
|
## ##
|
||||||
|
##############
|
||||||
|
|
||||||
|
; 26
|
||||||
|
|
||||||
|
#####
|
||||||
|
## # #####
|
||||||
|
###### # $ # # ####
|
||||||
|
# ### #$#### # ##
|
||||||
|
# ## # # $$ ### #
|
||||||
|
# ### ##$ @ $ # #
|
||||||
|
# # . # $$ # $ $$ # #
|
||||||
|
#..# .## $# ## #
|
||||||
|
# . ##$ #### #
|
||||||
|
#..##.# # #######
|
||||||
|
# . # ##
|
||||||
|
#..# . ####
|
||||||
|
# ###.# #
|
||||||
|
#### # #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 27
|
||||||
|
|
||||||
|
####### ########
|
||||||
|
# # # ## #
|
||||||
|
#### ### # #####$ $##
|
||||||
|
# # ### # ## $ #
|
||||||
|
# # # # $ $$$## #
|
||||||
|
# # #####$ # ### #
|
||||||
|
### ##### ## # $# $ #
|
||||||
|
# # # #$ # #####
|
||||||
|
# # # ## ## # #
|
||||||
|
# # #### ## # $ $ #
|
||||||
|
##### ## ## # # #
|
||||||
|
# #### ##### ######
|
||||||
|
# # # # $$$ # ##
|
||||||
|
# # ## $ $ #
|
||||||
|
######## ############## # #
|
||||||
|
# @..................#
|
||||||
|
# # ##################
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 28
|
||||||
|
|
||||||
|
##### ####
|
||||||
|
# ############..#
|
||||||
|
# $# $ $ $ $ $ #
|
||||||
|
## $ # # # #$ ..#
|
||||||
|
# # . . . *.. #
|
||||||
|
### $####@## # ## ##
|
||||||
|
## ## # ## ####$ ###
|
||||||
|
# ..* . . . # #
|
||||||
|
#.. $# # # # $ ##
|
||||||
|
# $ $ $ $ $ #$ #
|
||||||
|
#..############ #
|
||||||
|
#### #####
|
||||||
|
|
||||||
|
; 29
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
## # #####
|
||||||
|
## * # #
|
||||||
|
### # ## # #####
|
||||||
|
### $$# * # #
|
||||||
|
# *#. $ # ## # #
|
||||||
|
# # *... $$# * #
|
||||||
|
# #$$ ....$ # #####
|
||||||
|
##### # $.+.. $$# #
|
||||||
|
# * #$$ ...* # #
|
||||||
|
# # ## # $ .#* #
|
||||||
|
# # * #$$ ###
|
||||||
|
##### # ## # ###
|
||||||
|
# # * ##
|
||||||
|
##### # ##
|
||||||
|
# #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 30
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
########## #
|
||||||
|
# $ $ $$#
|
||||||
|
# @ $..*. #
|
||||||
|
# # *...$#
|
||||||
|
#####$...* #####
|
||||||
|
# .*..$# #
|
||||||
|
#$$ $ $ #
|
||||||
|
# ##########
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 31
|
||||||
|
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
############ #
|
||||||
|
# $ $.* $$#
|
||||||
|
# @ $..*.*. #
|
||||||
|
# # * $ .$#
|
||||||
|
#####*.$ *.#
|
||||||
|
#.* $.*#
|
||||||
|
#$. $ * #####
|
||||||
|
# .*.*..$# #
|
||||||
|
#$$ *.$ $ #
|
||||||
|
# ############
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 32
|
||||||
|
|
||||||
|
#########
|
||||||
|
# # #
|
||||||
|
## # # # ##
|
||||||
|
# *.*$*.* #
|
||||||
|
# # #
|
||||||
|
### $@$ ###
|
||||||
|
# # #
|
||||||
|
# *.*$*.* #
|
||||||
|
## # # # ##
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 33
|
||||||
|
|
||||||
|
#
|
||||||
|
# ######## #
|
||||||
|
# #
|
||||||
|
# *$.$.$* #
|
||||||
|
# *###* #
|
||||||
|
# $# #$ #
|
||||||
|
#.. .@. ..#
|
||||||
|
# $# #$ #
|
||||||
|
# *###* #
|
||||||
|
# *$.$.$* #
|
||||||
|
# #
|
||||||
|
# ######## #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 34
|
||||||
|
|
||||||
|
#### # ####
|
||||||
|
## # # ##
|
||||||
|
# ##### #
|
||||||
|
# $. * .$ #
|
||||||
|
###.$.$.$.###
|
||||||
|
# .$ $. #
|
||||||
|
# #*$ @ $*# #
|
||||||
|
# .$ $. #
|
||||||
|
###.$.$.$.###
|
||||||
|
# $. * .$ #
|
||||||
|
# ##### #
|
||||||
|
## # # ##
|
||||||
|
#### # ####
|
||||||
|
|
||||||
|
; 35
|
||||||
|
|
||||||
|
###########
|
||||||
|
## # ##
|
||||||
|
# .$$. .$$. #
|
||||||
|
# $..$ $..$ #
|
||||||
|
# .$$...$$. #
|
||||||
|
# $..$ $..$ #
|
||||||
|
## $$.*.$$ ##
|
||||||
|
# $..$ $..$ #
|
||||||
|
# .$$...$$. #
|
||||||
|
# $..$ $..$ #
|
||||||
|
# .$$.@.$$. #
|
||||||
|
## # ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
; 36
|
||||||
|
|
||||||
|
#############
|
||||||
|
# # #
|
||||||
|
# # # # # #
|
||||||
|
# .$.$.$. #
|
||||||
|
# #$.$.$.$# #
|
||||||
|
# .$.$.$. #
|
||||||
|
# #$.$@$.$# #
|
||||||
|
# .$.$.$. #
|
||||||
|
# #$.$.$.$# #
|
||||||
|
# .$.$.$. #
|
||||||
|
# # # # # # #
|
||||||
|
# # #
|
||||||
|
#############
|
||||||
|
|
||||||
|
; 37
|
||||||
|
|
||||||
|
############
|
||||||
|
# @ #
|
||||||
|
# # $ ## $ # #
|
||||||
|
# #.## ##.# #
|
||||||
|
# . ## . #
|
||||||
|
# $# #*##*# #$ #
|
||||||
|
# # * * # #
|
||||||
|
# # ## * ## # #
|
||||||
|
# # ## * ## # #
|
||||||
|
# # * * # #
|
||||||
|
# $# #*##*# #$ #
|
||||||
|
# . ## . #
|
||||||
|
# #.## ##.# #
|
||||||
|
# # $ ## $ # #
|
||||||
|
# #
|
||||||
|
############
|
||||||
|
|
||||||
|
; 38
|
||||||
|
|
||||||
|
##########
|
||||||
|
##### @ *#####
|
||||||
|
## $$ ##. . ##
|
||||||
|
# # ## # #
|
||||||
|
## # ## ## # ##
|
||||||
|
##. ## $##
|
||||||
|
#* # #*##*# # $ #
|
||||||
|
# . # * * # #
|
||||||
|
# ## ## * ## ## #
|
||||||
|
# ## ## * ## ## #
|
||||||
|
# # * * # . #
|
||||||
|
# $ # #*##*# # *#
|
||||||
|
##$ ## .##
|
||||||
|
## # ## ## # ##
|
||||||
|
# # ## # #
|
||||||
|
## . .## $$ ##
|
||||||
|
#####* #####
|
||||||
|
##########
|
||||||
|
|
||||||
|
; 39
|
||||||
|
|
||||||
|
#########
|
||||||
|
# #
|
||||||
|
###$#$ $#$###
|
||||||
|
# . . . . . #
|
||||||
|
###$#$#$ $#$#$###
|
||||||
|
# . . . . . . . #
|
||||||
|
# #$#$#$#$#$#$# #
|
||||||
|
# . . . . . . #
|
||||||
|
###$#$##@##$#$###
|
||||||
|
# . . . . . . #
|
||||||
|
# #$#$#$#$#$#$# #
|
||||||
|
# . . . . . . . #
|
||||||
|
###$#$#$ $#$#$###
|
||||||
|
# . . . . . #
|
||||||
|
###$#$ $#$###
|
||||||
|
# #
|
||||||
|
#########
|
||||||
|
|
||||||
|
; 40
|
||||||
|
|
||||||
|
###### ######
|
||||||
|
# ### #
|
||||||
|
# .$.$. # .$.$. #
|
||||||
|
# $.$.$ # $.$.$ #
|
||||||
|
# .$.$ ### $.$. #
|
||||||
|
# $.$.# .$.$ #
|
||||||
|
# .$ #$ $## $. #
|
||||||
|
## # $...$ # ##
|
||||||
|
#### .@. ####
|
||||||
|
## # $...$ # ##
|
||||||
|
# .$ ##$ $# $. #
|
||||||
|
# $.$. #.$.$ #
|
||||||
|
# .$.$ ### $.$. #
|
||||||
|
# $.$.$ # $.$.$ #
|
||||||
|
# .$.$. # .$.$. #
|
||||||
|
# ### #
|
||||||
|
###### ######
|
||||||
|
|
||||||
|
; 41
|
||||||
|
|
||||||
|
#####
|
||||||
|
# ## ######
|
||||||
|
# ## # ## #
|
||||||
|
# # # # # ### #
|
||||||
|
# # # ### # # #
|
||||||
|
# # $ # $ # #
|
||||||
|
# #$#*.#.*#$## #
|
||||||
|
## *.$ $.* ##
|
||||||
|
### .$ . $. ####
|
||||||
|
### .#. ###
|
||||||
|
#### .$ . $. ###
|
||||||
|
## *.$@$.* ##
|
||||||
|
# ##$#*.#.*#$# #
|
||||||
|
# # $ # $ # #
|
||||||
|
# # # ### # # #
|
||||||
|
# ### # # # # #
|
||||||
|
# ## # ## #
|
||||||
|
###### ## #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 42
|
||||||
|
|
||||||
|
##### #####
|
||||||
|
# # # #
|
||||||
|
### ##### ###
|
||||||
|
# .$.$. # $.$ #
|
||||||
|
### $.$.$ #.$.$.$.###
|
||||||
|
# $.$.$.$ $.$.$.$ #
|
||||||
|
# .$.$.$. .$.$.$. #
|
||||||
|
# $.$.$.$ $.$.$.$ #
|
||||||
|
### $.$.$ #.$.$.$.###
|
||||||
|
# .$.$. . $.$ #
|
||||||
|
### #.@.# ###
|
||||||
|
# $.$ . .$.$. #
|
||||||
|
###.$.$.$.# $.$.$ ###
|
||||||
|
# $.$.$.$ $.$.$.$ #
|
||||||
|
# .$.$.$. .$.$.$. #
|
||||||
|
# $.$.$.$ $.$.$.$ #
|
||||||
|
###.$.$.$.# $.$.$ ###
|
||||||
|
# $.$ # .$.$. #
|
||||||
|
### ##### ###
|
||||||
|
# # # #
|
||||||
|
##### #####
|
||||||
|
|
||||||
|
; 43
|
||||||
|
|
||||||
|
#####
|
||||||
|
## ##
|
||||||
|
##.$.$.##
|
||||||
|
##$.$.$##
|
||||||
|
# .$.$. #
|
||||||
|
# $.$.$ #
|
||||||
|
# .$.$. #
|
||||||
|
###### $.$.$ ######
|
||||||
|
### .$.$. ###
|
||||||
|
##.$.$.$.$.$.$.$.$.$.##
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
# .$.$.$.$ @ $.$.$.$. #
|
||||||
|
# $.$.$.$.$ $.$.$.$.$ #
|
||||||
|
##.$.$.$.$.$.$.$.$.$.##
|
||||||
|
### .$.$. ###
|
||||||
|
###### $.$.$ ######
|
||||||
|
# .$.$. #
|
||||||
|
# $.$.$ #
|
||||||
|
# .$.$. #
|
||||||
|
##$.$.$##
|
||||||
|
##.$.$.##
|
||||||
|
## ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 44
|
||||||
|
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
## ##
|
||||||
|
# $ #
|
||||||
|
# $ $ #
|
||||||
|
## .$.$.$. ##
|
||||||
|
# .$.$.$.$. #
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
## .$.$.$.$.$.$. ##
|
||||||
|
# $.$.$. .$.$.$ #
|
||||||
|
# $.$.$. .$.$.$ #
|
||||||
|
# $ $.$. @ .$.$ $ #
|
||||||
|
# $.$.$. .$.$.$ #
|
||||||
|
# $.$.$. .$.$.$ #
|
||||||
|
## .$.$.$.$.$.$. ##
|
||||||
|
# .$.$.$.$.$. #
|
||||||
|
# .$.$.$.$. #
|
||||||
|
## .$.$.$. ##
|
||||||
|
# $ $ #
|
||||||
|
# $ #
|
||||||
|
## ##
|
||||||
|
# #
|
||||||
|
#
|
||||||
|
|
||||||
|
; 45
|
||||||
|
|
||||||
|
####
|
||||||
|
# ########
|
||||||
|
# . #
|
||||||
|
# ### $$ #
|
||||||
|
# $# # .$#
|
||||||
|
##### # . .#.######
|
||||||
|
# $. # # . $ #
|
||||||
|
# $.#.###$### $ #
|
||||||
|
# $ . #. .#####.##
|
||||||
|
# # ## *$$ # # #
|
||||||
|
# # . $ $@$ $ . # #
|
||||||
|
# # # $$* ## # #
|
||||||
|
##.#####. .# . $ #
|
||||||
|
# $ ###$###.#.$ #
|
||||||
|
# $ . # # .$ #
|
||||||
|
######.#. . # #####
|
||||||
|
#$. # #$ #
|
||||||
|
# $$ ### #
|
||||||
|
# . #
|
||||||
|
######## #
|
||||||
|
####
|
||||||
|
|
||||||
|
; 46
|
||||||
|
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# # # #####
|
||||||
|
# # # #
|
||||||
|
#####$# #$#
|
||||||
|
# $ $ ####$ #####
|
||||||
|
# # # # ## # #
|
||||||
|
# ##### # # $$ # #
|
||||||
|
### $ #@# # #
|
||||||
|
# ####.... # # ###
|
||||||
|
# # # .... # # #
|
||||||
|
# # # .... # # #
|
||||||
|
### # # ....#### #
|
||||||
|
# # # # $ ###
|
||||||
|
# # $$ # # ##### #
|
||||||
|
# # ## # # # #
|
||||||
|
##### $#### $ $ #
|
||||||
|
#$# #$#####
|
||||||
|
# # # #
|
||||||
|
##### # # #
|
||||||
|
##### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
; 47
|
||||||
|
|
||||||
|
################ #######
|
||||||
|
# # # #
|
||||||
|
# $ $ $ $ ### ##### ### ##
|
||||||
|
# $ $ $ $ $ . # $ . ##
|
||||||
|
# $ $ ### #.#.# ### #.#.###
|
||||||
|
# $ $ $ . # . $ . # . #
|
||||||
|
## ### #.#.# ### #.#.# ### ##
|
||||||
|
# . # . $ # . $ $.$##
|
||||||
|
###.#.# ### # @ # ### #.#.###
|
||||||
|
##$.$ $ . # $ . # . #
|
||||||
|
## ### #.#.# ### #.#.# ### ##
|
||||||
|
# . # . $ . # . $ $ $ #
|
||||||
|
###.#.# ### #.#.# ### $ $ #
|
||||||
|
## . $ # . $ $ $ $ $ #
|
||||||
|
## ### ##### ### $ $ $ $ #
|
||||||
|
# # # #
|
||||||
|
####### ################
|
||||||
|
|
||||||
|
; 48
|
||||||
|
|
||||||
|
########################## #
|
||||||
|
## ##
|
||||||
|
# *.*.* *.*.* *.*.* *.*.* ###
|
||||||
|
# .$ $.$.$ $.$.$ $.$.$ $. .###
|
||||||
|
# * $ * * $ * * $ * * $ *# #
|
||||||
|
# .$ $.*.$ $.*.$ $.*.$ $.*.* #
|
||||||
|
# *.*.$ $.*.$ $.*.$ $.*.$ $. #
|
||||||
|
# $ * $ * * $ * * $ * * $ * #
|
||||||
|
# *.*.$ $.*.$ $.*.$ $.*.$ $. #
|
||||||
|
# .$ $.*.$ $.*+$ $.*.$ $.*.* #
|
||||||
|
# * $ * * $ * * $ * * $ * $ #
|
||||||
|
# .$ $.*.$ $.*.$ $.*.$ $.*.* #
|
||||||
|
# *.*.$ $.*.$ $.*.$ $.*.$ $. #
|
||||||
|
# #* $ * * $ * * $ * * $ * #
|
||||||
|
###. .$ $.$.$ $.$.$ $.$.$ $. #
|
||||||
|
### *.*.* *.*.* *.*.* *.*.* #
|
||||||
|
## ##
|
||||||
|
# ##########################
|
||||||
|
|
||||||
|
; 49
|
||||||
|
|
||||||
|
####################
|
||||||
|
# # # #
|
||||||
|
###$.$ $.$ $.$ $.$###
|
||||||
|
# $. .$$.#.$$. .$$.#.$ #
|
||||||
|
# .###.. # ..###.. # . #
|
||||||
|
# $. .$$.#.$$. .$$.#.$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $.#.$$. .$$.#.$$. .$ #
|
||||||
|
##. # ..###.. # ..###.##
|
||||||
|
# $.#.$$. .$$.#.$$. .$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $. .$$.#.$$. .$$.#.$ #
|
||||||
|
##.###.. # ..###.. # .##
|
||||||
|
# $. .$$.#.$$. .$$.#.$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $.$ $.$ $.$ $.$ #
|
||||||
|
# $.#.$$. .$$.#.$$. .$ #
|
||||||
|
# . # ..###.. # ..###. #
|
||||||
|
# $.#.$$. .$$.#.$$. .$ #
|
||||||
|
###$.$ $.$ $.$ $.$###
|
||||||
|
# # # @#
|
||||||
|
####################
|
||||||
|
|
||||||
|
; 50
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## # # # ##
|
||||||
|
# # .$.$.$.$ $.$.$.$. # #
|
||||||
|
# .$.$.$.$.$.$.$.$.$. #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$. .$.$.$.$. #
|
||||||
|
# $.$.$.$.$ $ $.$.$.$.$ #
|
||||||
|
## $.$.$.$. $@$ .$.$.$.$ ##
|
||||||
|
# $.$.$.$.$ $ $.$.$.$.$ #
|
||||||
|
# .$.$.$.$. .$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# $.$.$.$.$.$.$.$.$.$.$.$ #
|
||||||
|
##.$.$.$.$.$.$.$.$.$.$.$.##
|
||||||
|
# .$.$.$.$.$.$.$.$.$.$. #
|
||||||
|
# .$.$.$.$.$.$.$.$.$. #
|
||||||
|
# # .$.$.$.$ $.$.$.$. # #
|
||||||
|
## # # # ##
|
||||||
|
#########################
|
1047
maps_suites/Sokevo_107.xsb
Normal file
1047
maps_suites/Sokevo_107.xsb
Normal file
File diff suppressed because it is too large
Load diff
1831
maps_suites/Sokhard_163.xsb
Normal file
1831
maps_suites/Sokhard_163.xsb
Normal file
File diff suppressed because it is too large
Load diff
30360
maps_suites/Sven_1623.xsb
Normal file
30360
maps_suites/Sven_1623.xsb
Normal file
File diff suppressed because it is too large
Load diff
1670
maps_suites/XSokoban_90.xsb
Normal file
1670
maps_suites/XSokoban_90.xsb
Normal file
File diff suppressed because it is too large
Load diff
609
maps_suites/Yoshio Murase_handmade_54.xsb
Normal file
609
maps_suites/Yoshio Murase_handmade_54.xsb
Normal file
|
@ -0,0 +1,609 @@
|
||||||
|
;Copyright: Yoshio Murase <yoshio@asahi.email.ne.jp>
|
||||||
|
;
|
||||||
|
;(Levels # 18 and # 36 are combination works by
|
||||||
|
;Yoshio Murase and Masato Hiramatsu.)
|
||||||
|
;
|
||||||
|
;Downloaded from http://sokomind.home.pages.de/
|
||||||
|
;The original levels can be found at
|
||||||
|
;http://www.ne.jp/asahi/ai/yoshio/sokoban/main.htm
|
||||||
|
;
|
||||||
|
;You are not allowed to use the level maps from this
|
||||||
|
;file in order to distribute them. If you would like
|
||||||
|
;to include Yoshio Murase's maps, you have to read
|
||||||
|
;and follow the terms and conditions at the above
|
||||||
|
;mentioned original URL.
|
||||||
|
;
|
||||||
|
;YM_M001.XSB
|
||||||
|
###################
|
||||||
|
# ... @ ... #
|
||||||
|
# $$$ ##### $$$ #
|
||||||
|
## ### ### ##
|
||||||
|
## # ## #
|
||||||
|
#### ####
|
||||||
|
|
||||||
|
|
||||||
|
;YM_M002.XSB
|
||||||
|
####
|
||||||
|
### ##
|
||||||
|
# $ #
|
||||||
|
# #.#@#
|
||||||
|
# #$ .#
|
||||||
|
# .$ #
|
||||||
|
## ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M003.XSB
|
||||||
|
#####
|
||||||
|
### #
|
||||||
|
# $ # ##
|
||||||
|
# $.$. #
|
||||||
|
# ##. #
|
||||||
|
# @ ###
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M004.XSB
|
||||||
|
#####
|
||||||
|
### ###
|
||||||
|
# . $ . #
|
||||||
|
# #.$.# #
|
||||||
|
# $ # $ #
|
||||||
|
### @ ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M005.XSB
|
||||||
|
#####
|
||||||
|
# ###
|
||||||
|
###.# #
|
||||||
|
# $.$ # #
|
||||||
|
# #* $ #
|
||||||
|
#@ . ####
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M006.XSB
|
||||||
|
#####
|
||||||
|
# ##
|
||||||
|
###$ ##
|
||||||
|
# .$.$ #
|
||||||
|
# #.#.# #
|
||||||
|
# *$* #
|
||||||
|
### ###
|
||||||
|
# @ #
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M007.XSB
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
### #$#
|
||||||
|
# .$.###
|
||||||
|
# #$+$ #
|
||||||
|
# .$ # #
|
||||||
|
### #. #
|
||||||
|
# ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M008.XSB
|
||||||
|
###########
|
||||||
|
#@$ ....##
|
||||||
|
# $$$$#....#
|
||||||
|
# $ $..***##
|
||||||
|
## # ##.. #
|
||||||
|
# $$$# ## #
|
||||||
|
# ## # ##
|
||||||
|
# $$ # #
|
||||||
|
# ### #
|
||||||
|
####### ####
|
||||||
|
|
||||||
|
;YM_M009.XSB
|
||||||
|
######
|
||||||
|
## ##
|
||||||
|
# ## #
|
||||||
|
# # # #
|
||||||
|
#. .#$##
|
||||||
|
# # * $ #
|
||||||
|
# # * $@#
|
||||||
|
# .. $ #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M010.XSB
|
||||||
|
####
|
||||||
|
# ####
|
||||||
|
# ###
|
||||||
|
# #$ . #
|
||||||
|
## #.#$ #
|
||||||
|
# # @* #
|
||||||
|
# * ##
|
||||||
|
#### ##
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M011.XSB
|
||||||
|
#####
|
||||||
|
### ##
|
||||||
|
# . * #
|
||||||
|
# .$.#@#
|
||||||
|
## # $ #
|
||||||
|
# $ # #
|
||||||
|
### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M012.XSB
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
#. $#
|
||||||
|
# $ #
|
||||||
|
####.. ##
|
||||||
|
# $ ** #
|
||||||
|
# . @$ #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M013.XSB
|
||||||
|
#########
|
||||||
|
#... . #
|
||||||
|
#### #.#. #
|
||||||
|
### ......#
|
||||||
|
# $ $ $#..##
|
||||||
|
# $####..####
|
||||||
|
# $ ### ##
|
||||||
|
# $$$ $ $ $@ #
|
||||||
|
# $ $ $ $ $ #
|
||||||
|
## ##
|
||||||
|
############
|
||||||
|
|
||||||
|
;YM_M014.XSB
|
||||||
|
######
|
||||||
|
##### ###
|
||||||
|
# .##. ##
|
||||||
|
# .$## # #
|
||||||
|
##$$ # $ #
|
||||||
|
# . ##$#$ ##
|
||||||
|
# @ . . ##
|
||||||
|
###########
|
||||||
|
|
||||||
|
;YM_M015.XSB
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
#. $#
|
||||||
|
# $ #
|
||||||
|
##.. ##
|
||||||
|
# **$ #
|
||||||
|
# @ #
|
||||||
|
#######
|
||||||
|
|
||||||
|
;YM_M016.XSB
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
# .* ###
|
||||||
|
# .$.$ #
|
||||||
|
## $ @#
|
||||||
|
#### #
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M017.XSB
|
||||||
|
#####
|
||||||
|
#### #
|
||||||
|
#.##. $#
|
||||||
|
##$# $ #
|
||||||
|
# * .. ##
|
||||||
|
# #**$ #
|
||||||
|
##### @ #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M018.XSB
|
||||||
|
####
|
||||||
|
# ######
|
||||||
|
# $## @ ###
|
||||||
|
##. ## . #
|
||||||
|
# . $.$ #
|
||||||
|
# *$ #$#.###
|
||||||
|
### # #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM_M019.XSB
|
||||||
|
####
|
||||||
|
##@ ####
|
||||||
|
# $* * #
|
||||||
|
# * # #
|
||||||
|
# * #
|
||||||
|
# #*. #
|
||||||
|
# # #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM_M020.XSB
|
||||||
|
#####
|
||||||
|
## ##
|
||||||
|
# $..##
|
||||||
|
##$ #.$.#
|
||||||
|
# #...#
|
||||||
|
# $###$ #
|
||||||
|
# $ $ ##
|
||||||
|
##@ #
|
||||||
|
#######
|
||||||
|
|
||||||
|
;YM_M021.XSB
|
||||||
|
####
|
||||||
|
##### #
|
||||||
|
# $ . #
|
||||||
|
# *$ #
|
||||||
|
###..$ #
|
||||||
|
###@###
|
||||||
|
# $. ###
|
||||||
|
# $*. #
|
||||||
|
# . $ #
|
||||||
|
# #####
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M022.XSB
|
||||||
|
#####
|
||||||
|
# ####
|
||||||
|
###$ $ #
|
||||||
|
# $ # #
|
||||||
|
# # .## ##
|
||||||
|
#.**.##$#
|
||||||
|
# @ . #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M023.XSB
|
||||||
|
#########
|
||||||
|
# @ . #
|
||||||
|
# .#*$ #
|
||||||
|
# $. .$ #
|
||||||
|
##$.##$ #
|
||||||
|
# ## #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM_M024.XSB
|
||||||
|
#####
|
||||||
|
# @ #
|
||||||
|
### # ###
|
||||||
|
# $$#$$ #
|
||||||
|
# .. . #
|
||||||
|
## #.$##
|
||||||
|
# . #
|
||||||
|
#######
|
||||||
|
|
||||||
|
;YM_M025.XSB
|
||||||
|
#####
|
||||||
|
# ##
|
||||||
|
# *$ ##
|
||||||
|
#@ * ##
|
||||||
|
# .#$ #
|
||||||
|
## ...$##
|
||||||
|
### $* #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M026.XSB
|
||||||
|
####
|
||||||
|
### ##
|
||||||
|
# .. ###
|
||||||
|
# *.* #
|
||||||
|
#@$$.$$ #
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M027.XSB
|
||||||
|
########
|
||||||
|
# #
|
||||||
|
# $$#$ #
|
||||||
|
# $.* #
|
||||||
|
## ...##
|
||||||
|
##.$##
|
||||||
|
##... ##
|
||||||
|
# *.$ #
|
||||||
|
# $#$$ #
|
||||||
|
# @ #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM_M028.XSB
|
||||||
|
#####
|
||||||
|
### #
|
||||||
|
# $$.$#
|
||||||
|
# . . #
|
||||||
|
# # # #
|
||||||
|
# ..* ##
|
||||||
|
###@$$ #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M029.XSB
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
###$$ #
|
||||||
|
# $ #$ #
|
||||||
|
# $ # #
|
||||||
|
# $ @# ##
|
||||||
|
# $#.*. #
|
||||||
|
# $* #.#
|
||||||
|
## . #.#
|
||||||
|
###... #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M030.XSB
|
||||||
|
#####
|
||||||
|
## @ ##
|
||||||
|
# .$. #
|
||||||
|
# * * #
|
||||||
|
#$ #.*#
|
||||||
|
## # ##
|
||||||
|
# $.$.$ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M031.XSB
|
||||||
|
####
|
||||||
|
# #
|
||||||
|
#. #
|
||||||
|
# $#
|
||||||
|
#. #
|
||||||
|
### $###
|
||||||
|
# .$ ##
|
||||||
|
# # $$ #
|
||||||
|
# .##. @#
|
||||||
|
## * $##
|
||||||
|
# . #
|
||||||
|
#######
|
||||||
|
|
||||||
|
;YM_M032.XSB
|
||||||
|
#####
|
||||||
|
### ###
|
||||||
|
# $..$ #
|
||||||
|
# # ## #
|
||||||
|
# # ##@##
|
||||||
|
# $..$#
|
||||||
|
### #$ #
|
||||||
|
# . .#
|
||||||
|
#$# .#
|
||||||
|
# $ #
|
||||||
|
### #
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M033.XSB
|
||||||
|
####
|
||||||
|
#### ###
|
||||||
|
# $ $ #
|
||||||
|
#$..$ . ###
|
||||||
|
## #.##.. #
|
||||||
|
# ..$@$ $ #
|
||||||
|
# $ . #. ###
|
||||||
|
####$ $ #
|
||||||
|
# ####
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M034.XSB
|
||||||
|
######
|
||||||
|
### ##
|
||||||
|
# $$$$ #
|
||||||
|
# *..* #
|
||||||
|
# $. $.#
|
||||||
|
## $#.$#.##
|
||||||
|
# $. $. #
|
||||||
|
# $$*$#.# #
|
||||||
|
# .... # #
|
||||||
|
####### @#
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M035.XSB
|
||||||
|
#####
|
||||||
|
# @ ##
|
||||||
|
###$$$ ###
|
||||||
|
# .# . #
|
||||||
|
# #.# .# #
|
||||||
|
# . #.# #
|
||||||
|
# *$$$ #
|
||||||
|
### # ###
|
||||||
|
## #
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M036.XSB
|
||||||
|
#####
|
||||||
|
## .@##
|
||||||
|
# * #
|
||||||
|
# $*$ #
|
||||||
|
#..#..#
|
||||||
|
##$ . $##
|
||||||
|
# $ # $ #
|
||||||
|
# # #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M037.XSB
|
||||||
|
####
|
||||||
|
# ###
|
||||||
|
### $ ##
|
||||||
|
# $...$ #
|
||||||
|
# ##. # #
|
||||||
|
# .$.# #
|
||||||
|
# $#. $ #
|
||||||
|
## #$##@#
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM_M038.XSB
|
||||||
|
######
|
||||||
|
### . ###
|
||||||
|
# $.$$$ #
|
||||||
|
# # #. # #
|
||||||
|
# @. . # #
|
||||||
|
#### $ #
|
||||||
|
#$.####
|
||||||
|
# #
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M039.XSB
|
||||||
|
#####
|
||||||
|
## @###
|
||||||
|
# ** #
|
||||||
|
# # # #
|
||||||
|
# #*$ #
|
||||||
|
# # #.#
|
||||||
|
# *$. #
|
||||||
|
### ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M040.XSB
|
||||||
|
#####
|
||||||
|
# ##
|
||||||
|
###$.@ #
|
||||||
|
# $. #
|
||||||
|
# # * ##
|
||||||
|
# ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M041.XSB
|
||||||
|
##########
|
||||||
|
# #
|
||||||
|
# ##$# # #
|
||||||
|
# .....# #
|
||||||
|
###$$$$$ #
|
||||||
|
# * .@*###
|
||||||
|
# $$$$$ #
|
||||||
|
# # ...## #
|
||||||
|
# .#. .# #
|
||||||
|
### #$# #
|
||||||
|
# #####
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M042.XSB
|
||||||
|
#######
|
||||||
|
# #
|
||||||
|
### ### #
|
||||||
|
# *$ .#
|
||||||
|
# * $#.#
|
||||||
|
## *@$ .#
|
||||||
|
#$$* . #
|
||||||
|
# # .###
|
||||||
|
# ## #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M043.XSB
|
||||||
|
#####
|
||||||
|
## ###
|
||||||
|
# .... #
|
||||||
|
# #. # #
|
||||||
|
# $$$$ #
|
||||||
|
# $.@$###
|
||||||
|
# $$$$ #
|
||||||
|
##$..$# #
|
||||||
|
# .. # #
|
||||||
|
#.##. #
|
||||||
|
# ###
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M044.XSB
|
||||||
|
####
|
||||||
|
#### #
|
||||||
|
# .$* ##
|
||||||
|
# $ #
|
||||||
|
# .# . #
|
||||||
|
# *#$@##
|
||||||
|
## #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M045.XSB
|
||||||
|
###
|
||||||
|
#.#
|
||||||
|
##$###
|
||||||
|
## * #
|
||||||
|
# * *##
|
||||||
|
# * * #
|
||||||
|
# ** #
|
||||||
|
# * ##
|
||||||
|
## @ ##
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M046.XSB
|
||||||
|
#####
|
||||||
|
## ######
|
||||||
|
# $ $ #
|
||||||
|
# #. #
|
||||||
|
##@#### ##
|
||||||
|
# #. ##
|
||||||
|
## # #$$ #
|
||||||
|
# ** # ..#
|
||||||
|
# *## $$#
|
||||||
|
## .. #
|
||||||
|
##### #
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M047.XSB
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
####.. #
|
||||||
|
# #
|
||||||
|
#******#
|
||||||
|
# #
|
||||||
|
# $$####
|
||||||
|
# @ #
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M048.XSB
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
###$# ###
|
||||||
|
# #.@ #
|
||||||
|
# *.# #
|
||||||
|
# # # #
|
||||||
|
###$# #
|
||||||
|
# ###
|
||||||
|
#####
|
||||||
|
|
||||||
|
;YM_M049.XSB
|
||||||
|
########
|
||||||
|
# * #
|
||||||
|
# * . #
|
||||||
|
# *** ##
|
||||||
|
# $ * #
|
||||||
|
## @ #
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M050.XSB
|
||||||
|
#########
|
||||||
|
# . #
|
||||||
|
# ##$## #
|
||||||
|
# # * #
|
||||||
|
# # *@# #
|
||||||
|
# # $ # #
|
||||||
|
# # ### #
|
||||||
|
# . #
|
||||||
|
#########
|
||||||
|
|
||||||
|
;YM_M051.XSB
|
||||||
|
###########
|
||||||
|
# * #
|
||||||
|
#@# * . # #
|
||||||
|
# #*****# #
|
||||||
|
# # $ * # #
|
||||||
|
# * #
|
||||||
|
###### ###
|
||||||
|
####
|
||||||
|
|
||||||
|
;YM_M052.XSB
|
||||||
|
######
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
##$ ###
|
||||||
|
# $ #
|
||||||
|
#.***.#
|
||||||
|
# @ #
|
||||||
|
#######
|
||||||
|
|
||||||
|
;YM_M053.XSB
|
||||||
|
#####
|
||||||
|
## #
|
||||||
|
# # ###
|
||||||
|
# * $ #
|
||||||
|
#. * #@#
|
||||||
|
# * * #
|
||||||
|
## * ##
|
||||||
|
######
|
||||||
|
|
||||||
|
;YM_M054.XSB
|
||||||
|
#####
|
||||||
|
# @ #
|
||||||
|
### * ###
|
||||||
|
# ... #
|
||||||
|
# ##$## #
|
||||||
|
# $ $ #
|
||||||
|
### ###
|
||||||
|
# #
|
||||||
|
#####
|
533
maps_suites/Yoshio_Murase_auto_generated_52.xsb
Normal file
533
maps_suites/Yoshio_Murase_auto_generated_52.xsb
Normal file
|
@ -0,0 +1,533 @@
|
||||||
|
;Copyright: Yoshio Murase <yoshio@asahi.email.ne.jp>
|
||||||
|
;
|
||||||
|
;Downloaded from http://sokomind.home.pages.de/
|
||||||
|
;The original levels can be found at
|
||||||
|
;http://www.ne.jp/asahi/ai/yoshio/sokoban/main.htm
|
||||||
|
;
|
||||||
|
;You are not allowed to use the level maps from this
|
||||||
|
;file in order to distribute them. If you would like
|
||||||
|
;to include Yoshio Murase's maps, you have to read
|
||||||
|
;and follow the terms and conditions at the above
|
||||||
|
;mentioned original URL.
|
||||||
|
;
|
||||||
|
;YM001.XSB
|
||||||
|
########
|
||||||
|
### . #
|
||||||
|
## * # #
|
||||||
|
## .$ #
|
||||||
|
## #$##
|
||||||
|
### @ ##
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM002.XSB
|
||||||
|
########
|
||||||
|
## .@ #
|
||||||
|
## #.# #
|
||||||
|
## $ #
|
||||||
|
##.$$ ##
|
||||||
|
## ####
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM003.XSB
|
||||||
|
########
|
||||||
|
#### @##
|
||||||
|
# *$ ##
|
||||||
|
# ##
|
||||||
|
## .####
|
||||||
|
##$ ####
|
||||||
|
## .####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM004.XSB
|
||||||
|
########
|
||||||
|
##.###.#
|
||||||
|
## # .#
|
||||||
|
## $$ @#
|
||||||
|
## $ #
|
||||||
|
## # #
|
||||||
|
## ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM005.XSB
|
||||||
|
########
|
||||||
|
#### @##
|
||||||
|
#### #
|
||||||
|
#. #$$ #
|
||||||
|
# ##
|
||||||
|
#. $###
|
||||||
|
##. ###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM006.XSB
|
||||||
|
########
|
||||||
|
# ..####
|
||||||
|
# $ #
|
||||||
|
# #$# #
|
||||||
|
# @ .$ #
|
||||||
|
########
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM007.XSB
|
||||||
|
########
|
||||||
|
### .##
|
||||||
|
# $ # ##
|
||||||
|
# *$ ##
|
||||||
|
# .#@ ##
|
||||||
|
# ###
|
||||||
|
# ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM008.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
#. @.##
|
||||||
|
# $# ##
|
||||||
|
# # $. #
|
||||||
|
# $# #
|
||||||
|
#### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM009.XSB
|
||||||
|
########
|
||||||
|
#. .####
|
||||||
|
#.#$$ ##
|
||||||
|
# @ ##
|
||||||
|
# $# ##
|
||||||
|
## ###
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM010.XSB
|
||||||
|
########
|
||||||
|
#. ####
|
||||||
|
# # ##
|
||||||
|
# . # ##
|
||||||
|
# $*$ ##
|
||||||
|
##@ ####
|
||||||
|
## ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM011.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
#. . #
|
||||||
|
# # # #
|
||||||
|
#@$ $.#
|
||||||
|
##### $#
|
||||||
|
##### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM012.XSB
|
||||||
|
########
|
||||||
|
# #####
|
||||||
|
# #####
|
||||||
|
# .* #
|
||||||
|
##$ #
|
||||||
|
## #$###
|
||||||
|
##. @###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM013.XSB
|
||||||
|
########
|
||||||
|
## @ ###
|
||||||
|
## . #
|
||||||
|
#. $.$ #
|
||||||
|
##$# ###
|
||||||
|
## ###
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM014.XSB
|
||||||
|
########
|
||||||
|
## ###
|
||||||
|
# $# ###
|
||||||
|
# . @###
|
||||||
|
# * ##
|
||||||
|
## #$ ##
|
||||||
|
##. ###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM015.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
## ####
|
||||||
|
#..$ .#
|
||||||
|
# #$ $ #
|
||||||
|
#@ # #
|
||||||
|
##### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM016.XSB
|
||||||
|
########
|
||||||
|
## .@##
|
||||||
|
## $.#
|
||||||
|
####*# #
|
||||||
|
## #
|
||||||
|
# $ ##
|
||||||
|
# ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM017.XSB
|
||||||
|
########
|
||||||
|
##@ ####
|
||||||
|
## ####
|
||||||
|
##. ####
|
||||||
|
# $$. .#
|
||||||
|
# $ ###
|
||||||
|
### ###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM018.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
##. ###
|
||||||
|
## # ###
|
||||||
|
## *$ #
|
||||||
|
## $. #
|
||||||
|
## @###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM019.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
### ##
|
||||||
|
### #.##
|
||||||
|
### .##
|
||||||
|
#@ $$ ##
|
||||||
|
# .$ ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM020.XSB
|
||||||
|
########
|
||||||
|
# @###
|
||||||
|
# $# ###
|
||||||
|
# * $ #
|
||||||
|
# ## #
|
||||||
|
##. . #
|
||||||
|
### ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM021.XSB
|
||||||
|
########
|
||||||
|
## @##
|
||||||
|
## # #
|
||||||
|
##. $ #
|
||||||
|
## $$#.#
|
||||||
|
#### .#
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM022.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
###. ###
|
||||||
|
# . ###
|
||||||
|
# $$ #
|
||||||
|
## . $@#
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM023.XSB
|
||||||
|
########
|
||||||
|
##@. ##
|
||||||
|
# $$* ##
|
||||||
|
# # ##
|
||||||
|
# # .#
|
||||||
|
#### # #
|
||||||
|
#### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM024.XSB
|
||||||
|
########
|
||||||
|
##### #
|
||||||
|
#####$.#
|
||||||
|
### . #
|
||||||
|
### #.#
|
||||||
|
# $ $ #
|
||||||
|
# #@ #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM025.XSB
|
||||||
|
########
|
||||||
|
# .####
|
||||||
|
# $.. ##
|
||||||
|
# ##$##
|
||||||
|
## # #
|
||||||
|
##$ @#
|
||||||
|
## ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM026.XSB
|
||||||
|
########
|
||||||
|
### ###
|
||||||
|
### ###
|
||||||
|
### .. #
|
||||||
|
# $# #
|
||||||
|
# .$$ #
|
||||||
|
#### @ #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM027.XSB
|
||||||
|
########
|
||||||
|
# ####
|
||||||
|
# # *@##
|
||||||
|
# * #
|
||||||
|
###$ #
|
||||||
|
### .#
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM028.XSB
|
||||||
|
########
|
||||||
|
### . #
|
||||||
|
# $@#. #
|
||||||
|
# $# ##
|
||||||
|
# * ##
|
||||||
|
## # ##
|
||||||
|
### ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM029.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
########
|
||||||
|
## ####
|
||||||
|
# ##
|
||||||
|
# #$$@#
|
||||||
|
# . *.#
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM030.XSB
|
||||||
|
########
|
||||||
|
##@ #
|
||||||
|
#. # #
|
||||||
|
# $$$.##
|
||||||
|
# .# ##
|
||||||
|
# #####
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM031.XSB
|
||||||
|
########
|
||||||
|
# #
|
||||||
|
# # ##*#
|
||||||
|
# #@ $ #
|
||||||
|
#.$ . #
|
||||||
|
##### #
|
||||||
|
##### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM032.XSB
|
||||||
|
########
|
||||||
|
##@ ##
|
||||||
|
###$ #
|
||||||
|
### . #
|
||||||
|
# $ #$##
|
||||||
|
# . .##
|
||||||
|
#### ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM033.XSB
|
||||||
|
########
|
||||||
|
# ####
|
||||||
|
# $ ##
|
||||||
|
##$$ .##
|
||||||
|
##@ . ##
|
||||||
|
### # ##
|
||||||
|
### .##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM034.XSB
|
||||||
|
########
|
||||||
|
# ####
|
||||||
|
# $$ #
|
||||||
|
# .#. #
|
||||||
|
# ## ##
|
||||||
|
# ##$##
|
||||||
|
# @ .##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM035.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
########
|
||||||
|
# . ###
|
||||||
|
# .# ###
|
||||||
|
# @$$ #
|
||||||
|
# $. #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM036.XSB
|
||||||
|
########
|
||||||
|
# @.# #
|
||||||
|
# .$ . #
|
||||||
|
# #$ #
|
||||||
|
# $ ##
|
||||||
|
### ###
|
||||||
|
### ###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM037.XSB
|
||||||
|
########
|
||||||
|
## . #
|
||||||
|
# $ $@#
|
||||||
|
#.$.####
|
||||||
|
# #####
|
||||||
|
# #####
|
||||||
|
# #####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM038.XSB
|
||||||
|
########
|
||||||
|
# . ###
|
||||||
|
# #@###
|
||||||
|
# $ ###
|
||||||
|
##$# ##
|
||||||
|
# # ##
|
||||||
|
#. * ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM039.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
#### . #
|
||||||
|
# *@ . #
|
||||||
|
# $ # #
|
||||||
|
# # $ #
|
||||||
|
# ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM040.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
########
|
||||||
|
### ###
|
||||||
|
# .. $.#
|
||||||
|
# $$ @#
|
||||||
|
#### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM041.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
#####@ #
|
||||||
|
##### .#
|
||||||
|
# $ $ $#
|
||||||
|
# . #
|
||||||
|
### . #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM042.XSB
|
||||||
|
########
|
||||||
|
# # #
|
||||||
|
# #.$ $#
|
||||||
|
# $ #
|
||||||
|
#####. #
|
||||||
|
### @#
|
||||||
|
### .#
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM043.XSB
|
||||||
|
########
|
||||||
|
####@ ##
|
||||||
|
### ..#
|
||||||
|
## $#$##
|
||||||
|
# $. #
|
||||||
|
# # #
|
||||||
|
# ###
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM044.XSB
|
||||||
|
########
|
||||||
|
# @###
|
||||||
|
# $$####
|
||||||
|
# $ . #
|
||||||
|
## #.# #
|
||||||
|
#. # #
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM045.XSB
|
||||||
|
########
|
||||||
|
#### ##
|
||||||
|
#### $##
|
||||||
|
# @$. #
|
||||||
|
# ## #
|
||||||
|
# ## #
|
||||||
|
# * .#
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM046.XSB
|
||||||
|
########
|
||||||
|
#### @ #
|
||||||
|
#### #
|
||||||
|
## $ $##
|
||||||
|
## $ ##
|
||||||
|
#. # ##
|
||||||
|
#.. ##
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM047.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
####. @#
|
||||||
|
# .$ #
|
||||||
|
# # ###
|
||||||
|
# $ $ .#
|
||||||
|
#### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM048.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
# .# @#
|
||||||
|
# # $ #
|
||||||
|
# $.#$ #
|
||||||
|
## . #
|
||||||
|
## ####
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM049.XSB
|
||||||
|
########
|
||||||
|
########
|
||||||
|
## #
|
||||||
|
##.## .#
|
||||||
|
##* $@#
|
||||||
|
## #$ #
|
||||||
|
## # #
|
||||||
|
########
|
||||||
|
|
||||||
|
;ym050.xsb
|
||||||
|
########
|
||||||
|
#. #####
|
||||||
|
# $#####
|
||||||
|
# #####
|
||||||
|
# .$ @ #
|
||||||
|
# .$ # #
|
||||||
|
### #
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM051.XSB
|
||||||
|
########
|
||||||
|
# #
|
||||||
|
# #$ #
|
||||||
|
# $ @#.#
|
||||||
|
##$#. #
|
||||||
|
## .#
|
||||||
|
########
|
||||||
|
########
|
||||||
|
|
||||||
|
;YM052.XSB
|
||||||
|
########
|
||||||
|
# . ###
|
||||||
|
# ###
|
||||||
|
# #$$. #
|
||||||
|
#. ## #
|
||||||
|
#@$ ## #
|
||||||
|
### #
|
||||||
|
########
|
||||||
|
|
||||||
|
|
925
sokoban.supp
Normal file
925
sokoban.supp
Normal file
|
@ -0,0 +1,925 @@
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:strdup
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:strdup
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_first_db
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_home_terminfo
|
||||||
|
fun:_nc_first_db
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_tparm_analyze
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:tparm
|
||||||
|
fun:_nc_mvcur_init_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:make_map
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:make_map
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_add_to_try
|
||||||
|
fun:_nc_init_keytry
|
||||||
|
fun:_nc_keypad
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_first_db
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:make_map
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:make_map
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_first_db
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:tparm
|
||||||
|
fun:_nc_mvcur_init_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:wrefresh
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:wrefresh
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:wrefresh
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_add_to_try
|
||||||
|
fun:_nc_init_keytry
|
||||||
|
fun:_nc_keypad
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_add_to_try
|
||||||
|
fun:_nc_init_keytry
|
||||||
|
fun:_nc_keypad
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:new_prescr
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_add_to_try
|
||||||
|
fun:_nc_init_keytry
|
||||||
|
fun:_nc_keypad
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:wrefresh
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:realloc
|
||||||
|
fun:_nc_doalloc
|
||||||
|
fun:_nc_read_termtype
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_read_entry2
|
||||||
|
fun:_nc_setup_tinfo
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
obj:/usr/lib/libncursesw.so.6.2
|
||||||
|
fun:_nc_setupterm
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_init_wacs
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_printf_string_sp
|
||||||
|
fun:vw_printw
|
||||||
|
fun:mvprintw
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:read_map
|
||||||
|
fun:open_map
|
||||||
|
fun:make_map
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:_nc_setupscreen_sp
|
||||||
|
fun:newterm_sp
|
||||||
|
fun:newterm
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack
|
||||||
|
fun:runtime.rt0_go
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack
|
||||||
|
fun:runtime.rt0_go
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustpointer
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack
|
||||||
|
fun:runtime.rt0_go
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustpointer
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack
|
||||||
|
fun:runtime.rt0_go
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:x_cgo_sys_thread_create
|
||||||
|
fun:_rt0_amd64_lib
|
||||||
|
fun:call_init
|
||||||
|
fun:_dl_init
|
||||||
|
obj:/usr/lib/ld-2.33.so
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.main.func1
|
||||||
|
fun:runtime.systemstack
|
||||||
|
obj:/mnt/share/ed/libX11.so
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.startm
|
||||||
|
fun:runtime.newproc1
|
||||||
|
fun:runtime.newproc.func1
|
||||||
|
fun:runtime.systemstack
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.startm
|
||||||
|
fun:runtime.handoffp
|
||||||
|
fun:runtime.stoplockedm
|
||||||
|
fun:runtime.schedule
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall
|
||||||
|
obj:*
|
||||||
|
fun:runtime.malg.func1
|
||||||
|
fun:runtime.systemstack
|
||||||
|
obj:/mnt/share/ed/libX11.so
|
||||||
|
fun:runtime.rt0_go
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<edstem-suppression>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:x_cgo_sys_thread_create
|
||||||
|
fun:_rt0_amd64_lib
|
||||||
|
fun:call_init
|
||||||
|
fun:_dl_init
|
||||||
|
obj:/usr/lib/ld-2.33.so
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack.abi0
|
||||||
|
fun:runtime.newproc.abi0
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustpointer
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack.abi0
|
||||||
|
fun:runtime.newproc.abi0
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Cond
|
||||||
|
fun:runtime.adjustpointer
|
||||||
|
fun:runtime.adjustframe
|
||||||
|
fun:runtime.gentraceback
|
||||||
|
fun:runtime.copystack
|
||||||
|
fun:runtime.newstack
|
||||||
|
fun:runtime.morestack.abi0
|
||||||
|
fun:runtime.newproc.abi0
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:x_cgo_sys_thread_create
|
||||||
|
fun:_rt0_amd64_lib
|
||||||
|
obj:*
|
||||||
|
fun:call_init
|
||||||
|
fun:_dl_init
|
||||||
|
obj:/usr/lib/ld-2.33.so
|
||||||
|
obj:*
|
||||||
|
obj:*
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall.abi0
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.main.func1
|
||||||
|
fun:runtime.systemstack.abi0
|
||||||
|
fun:runtime.newproc.abi0
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall.abi0
|
||||||
|
fun:runtime.newobject
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.startm
|
||||||
|
fun:runtime.wakep
|
||||||
|
fun:runtime.newproc.func1
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall.abi0
|
||||||
|
fun:runtime.newobject
|
||||||
|
obj:*
|
||||||
|
fun:runtime.newm
|
||||||
|
fun:runtime.startm
|
||||||
|
fun:runtime.handoffp
|
||||||
|
fun:runtime.stoplockedm
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: possible
|
||||||
|
fun:calloc
|
||||||
|
fun:_dl_allocate_tls
|
||||||
|
fun:pthread_create@@GLIBC_2.2.5
|
||||||
|
fun:_cgo_try_pthread_create
|
||||||
|
fun:_cgo_sys_thread_start
|
||||||
|
fun:runtime.asmcgocall.abi0
|
||||||
|
obj:*
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:_nc_makenew_sp
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:malloc
|
||||||
|
fun:_nc_hash_map_sp
|
||||||
|
fun:_nc_scroll_optimize_sp
|
||||||
|
fun:doupdate_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
||||||
|
{
|
||||||
|
<insert_a_suppression_name_here>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
fun:calloc
|
||||||
|
fun:newwin_sp
|
||||||
|
fun:play
|
||||||
|
fun:main
|
||||||
|
}
|
284
src/ai/ai.c
Normal file
284
src/ai/ai.c
Normal file
|
@ -0,0 +1,284 @@
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "ai.h"
|
||||||
|
#include "utils.h"
|
||||||
|
#include "hashtable.h"
|
||||||
|
#include "priority_queue.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve solution and return a string containing the squence of moves
|
||||||
|
*/
|
||||||
|
char* save_solution( node_t* solution_node ){
|
||||||
|
node_t* n = solution_node;
|
||||||
|
char *solution_string = malloc(sizeof(char) * solution_node->depth+1);
|
||||||
|
solution_string[n->depth] = '\0';
|
||||||
|
while (n->parent != NULL)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (n->move) {
|
||||||
|
case up:
|
||||||
|
if (n->parent->state.map[n->state.player_y][n->state.player_x] == '$')
|
||||||
|
solution_string[n->depth-1] = 'U';
|
||||||
|
else
|
||||||
|
solution_string[n->depth-1] = 'u';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case down:
|
||||||
|
if (n->parent->state.map[n->state.player_y][n->state.player_x] == '$')
|
||||||
|
solution_string[n->depth-1] = 'D';
|
||||||
|
else
|
||||||
|
solution_string[n->depth-1] = 'd';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case left:
|
||||||
|
if (n->parent->state.map[n->state.player_y][n->state.player_x] == '$')
|
||||||
|
solution_string[n->depth-1] = 'L';
|
||||||
|
else
|
||||||
|
solution_string[n->depth-1] = 'l';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case right:
|
||||||
|
if (n->parent->state.map[n->state.player_y][n->state.player_x] == '$')
|
||||||
|
solution_string[n->depth-1] = 'R';
|
||||||
|
else
|
||||||
|
solution_string[n->depth-1] = 'r';
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
n = n->parent;
|
||||||
|
}
|
||||||
|
return solution_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a src into a dst state
|
||||||
|
*/
|
||||||
|
void copy_state(sokoban_t* init_data, state_t* dst, state_t* src){
|
||||||
|
|
||||||
|
dst->map = malloc(sizeof(char *) * init_data->lines);
|
||||||
|
for ( int i = 0; i < init_data->lines; ++i ){
|
||||||
|
int width = strlen(src->map[i]) + 1;
|
||||||
|
dst->map[i] = malloc(width);
|
||||||
|
memcpy(dst->map[i], src->map[i], width);
|
||||||
|
}
|
||||||
|
|
||||||
|
dst->player_x = src->player_x;
|
||||||
|
|
||||||
|
dst->player_y = src->player_y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the initial node
|
||||||
|
*/
|
||||||
|
node_t* create_init_node( sokoban_t* init_data ){
|
||||||
|
node_t * new_n = (node_t *) malloc(sizeof(node_t));
|
||||||
|
new_n->parent = NULL;
|
||||||
|
new_n->priority = 0;
|
||||||
|
new_n->depth = 0;
|
||||||
|
new_n->num_childs = 0;
|
||||||
|
new_n->move = -1;
|
||||||
|
new_n->state.map = malloc(sizeof(char *) * init_data->lines);
|
||||||
|
for (int i = 0; i < init_data->lines; ++i)
|
||||||
|
{
|
||||||
|
int width = strlen(init_data->map[i]) + 1;
|
||||||
|
new_n->state.map[i] = malloc(width);
|
||||||
|
memcpy(new_n->state.map[i], init_data->map[i], width);
|
||||||
|
}
|
||||||
|
|
||||||
|
new_n->state.player_x = init_data->player_x;
|
||||||
|
|
||||||
|
new_n->state.player_y = init_data->player_y;
|
||||||
|
return new_n;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the a node from a parent node
|
||||||
|
*/
|
||||||
|
node_t* create_node( sokoban_t* init_data, node_t* parent ){
|
||||||
|
node_t * new_n = (node_t *) malloc(sizeof(node_t));
|
||||||
|
new_n->parent = parent;
|
||||||
|
new_n->depth = parent->depth + 1;
|
||||||
|
copy_state(init_data, &(new_n->state), &(parent->state));
|
||||||
|
return new_n;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply an action to node n, create a new node resulting from
|
||||||
|
* executing the action, and return if the player moved
|
||||||
|
*/
|
||||||
|
bool applyAction(sokoban_t* init_data, node_t* n, node_t** new_node, move_t action ){
|
||||||
|
|
||||||
|
bool player_moved = false;
|
||||||
|
|
||||||
|
*new_node = create_node( init_data, n );
|
||||||
|
(*new_node)->move = action;
|
||||||
|
(*new_node)->priority = -(*new_node)->depth;
|
||||||
|
|
||||||
|
player_moved = execute_move_t( init_data, &((*new_node)->state), action );
|
||||||
|
|
||||||
|
return player_moved;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Book keeping variable and function to free memory once the solver finishes
|
||||||
|
*/
|
||||||
|
node_t** expanded_nodes_table;
|
||||||
|
unsigned expanded_nodes_table_size = 10000000; //10M
|
||||||
|
void update_explore_table(node_t* n, unsigned expanded_nodes ){
|
||||||
|
if( expanded_nodes > expanded_nodes_table_size - 1){
|
||||||
|
expanded_nodes_table_size *= 2;
|
||||||
|
expanded_nodes_table = realloc( expanded_nodes_table, sizeof(node_t*) * expanded_nodes_table_size );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
expanded_nodes_table[ expanded_nodes ] = n;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void free_memory(unsigned expanded_nodes ){
|
||||||
|
for( unsigned i = 0; i < expanded_nodes; i++){
|
||||||
|
free(expanded_nodes_table[ i ]);
|
||||||
|
}
|
||||||
|
free(expanded_nodes_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a 2D map, returns a 1D map
|
||||||
|
*/
|
||||||
|
void flatten_map( sokoban_t* init_data, char **dst_map, char **src_map){
|
||||||
|
|
||||||
|
int current_i = 0;
|
||||||
|
for (int i = 0; i < init_data->lines; ++i)
|
||||||
|
{
|
||||||
|
int width = strlen(src_map[i]);
|
||||||
|
for ( int j = 0; j < width; j++ ){
|
||||||
|
(*dst_map)[current_i] = src_map[i][j];
|
||||||
|
current_i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a solution by exploring all possible paths
|
||||||
|
*/
|
||||||
|
void find_solution(sokoban_t* init_data, bool show_solution)
|
||||||
|
{
|
||||||
|
// Keep track of solving time
|
||||||
|
clock_t start = clock();
|
||||||
|
|
||||||
|
// Solution String containing the sequence of moves
|
||||||
|
char* solution = NULL;
|
||||||
|
|
||||||
|
HashTable hashTable;
|
||||||
|
struct heap pq;
|
||||||
|
|
||||||
|
// Statistics
|
||||||
|
unsigned generated_nodes = 0;
|
||||||
|
unsigned expanded_nodes = 0;
|
||||||
|
unsigned duplicated_nodes = 0;
|
||||||
|
int max_depth = 0;
|
||||||
|
unsigned solution_size = 0;
|
||||||
|
|
||||||
|
// Choose initial capacity of PRIME NUMBER
|
||||||
|
// Specify the size of the keys and values you want to store once
|
||||||
|
// The Hash Table only accept a 1D key and value.
|
||||||
|
ht_setup( &hashTable, sizeof(int8_t) * init_data->num_chars_map, sizeof(int8_t) * init_data->num_chars_map, 16769023);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Data structure to create a 1D representation of the map
|
||||||
|
// Needed to interact with the hash table
|
||||||
|
char* flat_map = calloc( init_data->num_chars_map, sizeof(char));
|
||||||
|
|
||||||
|
// Initialize heap
|
||||||
|
heap_init(&pq);
|
||||||
|
|
||||||
|
// Initialize expanded nodes table.
|
||||||
|
// This table will be used to free your memory once a solution is found
|
||||||
|
expanded_nodes_table = (node_t**) malloc( sizeof(node_t*) * expanded_nodes_table_size );
|
||||||
|
|
||||||
|
|
||||||
|
// Add the initial node
|
||||||
|
node_t* n = create_init_node( init_data );
|
||||||
|
|
||||||
|
// Use the max heap API provided in priority_queue.h
|
||||||
|
heap_push(&pq,n);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FILL IN THE GRAPH ALGORITHM
|
||||||
|
* */
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------
|
||||||
|
|
||||||
|
// Free Memory of HashTable, Explored and flatmap
|
||||||
|
ht_clear(&hashTable);
|
||||||
|
ht_destroy(&hashTable);
|
||||||
|
free_memory(expanded_nodes);
|
||||||
|
free(flat_map);
|
||||||
|
//----------------------------
|
||||||
|
|
||||||
|
// Stop clock
|
||||||
|
clock_t end = clock();
|
||||||
|
double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
|
||||||
|
|
||||||
|
// Show Soltion
|
||||||
|
if( show_solution && solution != NULL ) play_solution( *init_data, solution);
|
||||||
|
|
||||||
|
endwin();
|
||||||
|
|
||||||
|
if( solution != NULL ){
|
||||||
|
printf("\nSOLUTION: \n");
|
||||||
|
printf( "%s\n\n", solution);
|
||||||
|
FILE *fptr = fopen("solution.txt", "w");
|
||||||
|
if (fptr == NULL)
|
||||||
|
{
|
||||||
|
printf("Could not open file");
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
fprintf(fptr,"%s\n", solution);
|
||||||
|
fclose(fptr);
|
||||||
|
|
||||||
|
free(solution);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printf("STATS: \n");
|
||||||
|
printf("\tExpanded nodes: %'d\n\tGenerated nodes: %'d\n\tDuplicated nodes: %'d\n", expanded_nodes, generated_nodes, duplicated_nodes);
|
||||||
|
printf("\tSolution Length: %d\n", solution_size);
|
||||||
|
printf("\tExpanded/seconds: %d\n", (int)(expanded_nodes/cpu_time_used) );
|
||||||
|
printf("\tTime (seconds): %f\n", cpu_time_used );
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void solve(char const *path, bool show_solution)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Load Map
|
||||||
|
*/
|
||||||
|
sokoban_t sokoban = make_map(path, sokoban);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count number of boxes and Storage locations
|
||||||
|
*/
|
||||||
|
map_check(sokoban);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locate player x,y position
|
||||||
|
*/
|
||||||
|
sokoban = find_player(sokoban);
|
||||||
|
|
||||||
|
sokoban.base_path = path;
|
||||||
|
|
||||||
|
find_solution(&sokoban, show_solution);
|
||||||
|
|
||||||
|
}
|
11
src/ai/ai.h
Normal file
11
src/ai/ai.h
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef __AI__
|
||||||
|
#define __AI__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "node.h"
|
||||||
|
#include "priority_queue.h"
|
||||||
|
|
||||||
|
void solve(char const *path, bool show_solution);
|
||||||
|
|
||||||
|
#endif
|
443
src/ai/hashtable.c
Normal file
443
src/ai/hashtable.c
Normal file
|
@ -0,0 +1,443 @@
|
||||||
|
/**
|
||||||
|
* Original source: https://github.com/goldsborough/hashtable
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "hashtable.h"
|
||||||
|
|
||||||
|
int ht_setup(HashTable* table,
|
||||||
|
size_t key_size,
|
||||||
|
size_t value_size,
|
||||||
|
size_t capacity) {
|
||||||
|
assert(table != NULL);
|
||||||
|
|
||||||
|
if (table == NULL) return HT_ERROR;
|
||||||
|
|
||||||
|
if (capacity < HT_MINIMUM_CAPACITY) {
|
||||||
|
capacity = HT_MINIMUM_CAPACITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_ht_allocate(table, capacity) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
table->key_size = key_size;
|
||||||
|
table->value_size = value_size;
|
||||||
|
table->hash = _ht_default_hash;
|
||||||
|
table->compare = _ht_default_compare;
|
||||||
|
table->size = 0;
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_copy(HashTable* first, HashTable* second) {
|
||||||
|
size_t chain;
|
||||||
|
HTNode* node;
|
||||||
|
|
||||||
|
assert(first != NULL);
|
||||||
|
assert(ht_is_initialized(second));
|
||||||
|
|
||||||
|
if (first == NULL) return HT_ERROR;
|
||||||
|
if (!ht_is_initialized(second)) return HT_ERROR;
|
||||||
|
|
||||||
|
if (_ht_allocate(first, second->capacity) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
first->key_size = second->key_size;
|
||||||
|
first->value_size = second->value_size;
|
||||||
|
first->hash = second->hash;
|
||||||
|
first->compare = second->compare;
|
||||||
|
first->size = second->size;
|
||||||
|
|
||||||
|
for (chain = 0; chain < second->capacity; ++chain) {
|
||||||
|
for (node = second->nodes[chain]; node; node = node->next) {
|
||||||
|
if (_ht_push_front(first, chain, node->key, node->value) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_move(HashTable* first, HashTable* second) {
|
||||||
|
assert(first != NULL);
|
||||||
|
assert(ht_is_initialized(second));
|
||||||
|
|
||||||
|
if (first == NULL) return HT_ERROR;
|
||||||
|
if (!ht_is_initialized(second)) return HT_ERROR;
|
||||||
|
|
||||||
|
*first = *second;
|
||||||
|
second->nodes = NULL;
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_swap(HashTable* first, HashTable* second) {
|
||||||
|
assert(ht_is_initialized(first));
|
||||||
|
assert(ht_is_initialized(second));
|
||||||
|
|
||||||
|
if (!ht_is_initialized(first)) return HT_ERROR;
|
||||||
|
if (!ht_is_initialized(second)) return HT_ERROR;
|
||||||
|
|
||||||
|
_ht_int_swap(&first->key_size, &second->key_size);
|
||||||
|
_ht_int_swap(&first->value_size, &second->value_size);
|
||||||
|
_ht_int_swap(&first->size, &second->size);
|
||||||
|
_ht_pointer_swap((void**)&first->hash, (void**)&second->hash);
|
||||||
|
_ht_pointer_swap((void**)&first->compare, (void**)&second->compare);
|
||||||
|
_ht_pointer_swap((void**)&first->nodes, (void**)&second->nodes);
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_destroy(HashTable* table) {
|
||||||
|
HTNode* node;
|
||||||
|
HTNode* next;
|
||||||
|
size_t chain;
|
||||||
|
|
||||||
|
assert(ht_is_initialized(table));
|
||||||
|
if (!ht_is_initialized(table)) return HT_ERROR;
|
||||||
|
|
||||||
|
for (chain = 0; chain < table->capacity; ++chain) {
|
||||||
|
node = table->nodes[chain];
|
||||||
|
while (node) {
|
||||||
|
next = node->next;
|
||||||
|
_ht_destroy_node(node);
|
||||||
|
node = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(table->nodes);
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_insert(HashTable* table, void* key, void* value) {
|
||||||
|
size_t index;
|
||||||
|
HTNode* node;
|
||||||
|
|
||||||
|
assert(ht_is_initialized(table));
|
||||||
|
assert(key != NULL);
|
||||||
|
|
||||||
|
if (!ht_is_initialized(table)) return HT_ERROR;
|
||||||
|
if (key == NULL) return HT_ERROR;
|
||||||
|
|
||||||
|
if (_ht_should_grow(table)) {
|
||||||
|
_ht_adjust_capacity(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
index = _ht_hash(table, key);
|
||||||
|
for (node = table->nodes[index]; node; node = node->next) {
|
||||||
|
if (_ht_equal(table, key, node->key)) {
|
||||||
|
memcpy(node->value, value, table->value_size);
|
||||||
|
return HT_UPDATED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_ht_push_front(table, index, key, value) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
++table->size;
|
||||||
|
|
||||||
|
return HT_INSERTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_contains(HashTable* table, void* key) {
|
||||||
|
size_t index;
|
||||||
|
HTNode* node;
|
||||||
|
|
||||||
|
assert(ht_is_initialized(table));
|
||||||
|
assert(key != NULL);
|
||||||
|
|
||||||
|
if (!ht_is_initialized(table)) return HT_ERROR;
|
||||||
|
if (key == NULL) return HT_ERROR;
|
||||||
|
|
||||||
|
index = _ht_hash(table, key);
|
||||||
|
for (node = table->nodes[index]; node; node = node->next) {
|
||||||
|
if (_ht_equal(table, key, node->key)) {
|
||||||
|
return HT_FOUND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return HT_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* ht_lookup(HashTable* table, void* key) {
|
||||||
|
HTNode* node;
|
||||||
|
size_t index;
|
||||||
|
|
||||||
|
assert(table != NULL);
|
||||||
|
assert(key != NULL);
|
||||||
|
|
||||||
|
if (table == NULL) return NULL;
|
||||||
|
if (key == NULL) return NULL;
|
||||||
|
|
||||||
|
index = _ht_hash(table, key);
|
||||||
|
for (node = table->nodes[index]; node; node = node->next) {
|
||||||
|
if (_ht_equal(table, key, node->key)) {
|
||||||
|
return node->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const void* ht_const_lookup(const HashTable* table, void* key) {
|
||||||
|
const HTNode* node;
|
||||||
|
size_t index;
|
||||||
|
|
||||||
|
assert(table != NULL);
|
||||||
|
assert(key != NULL);
|
||||||
|
|
||||||
|
if (table == NULL) return NULL;
|
||||||
|
if (key == NULL) return NULL;
|
||||||
|
|
||||||
|
index = _ht_hash(table, key);
|
||||||
|
for (node = table->nodes[index]; node; node = node->next) {
|
||||||
|
if (_ht_equal(table, key, node->key)) {
|
||||||
|
return node->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_erase(HashTable* table, void* key) {
|
||||||
|
HTNode* node;
|
||||||
|
HTNode* previous;
|
||||||
|
size_t index;
|
||||||
|
|
||||||
|
assert(table != NULL);
|
||||||
|
assert(key != NULL);
|
||||||
|
|
||||||
|
if (table == NULL) return HT_ERROR;
|
||||||
|
if (key == NULL) return HT_ERROR;
|
||||||
|
|
||||||
|
index = _ht_hash(table, key);
|
||||||
|
node = table->nodes[index];
|
||||||
|
|
||||||
|
for (previous = NULL; node; previous = node, node = node->next) {
|
||||||
|
if (_ht_equal(table, key, node->key)) {
|
||||||
|
if (previous) {
|
||||||
|
previous->next = node->next;
|
||||||
|
} else {
|
||||||
|
table->nodes[index] = node->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ht_destroy_node(node);
|
||||||
|
--table->size;
|
||||||
|
|
||||||
|
if (_ht_should_shrink(table)) {
|
||||||
|
if (_ht_adjust_capacity(table) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return HT_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_clear(HashTable* table) {
|
||||||
|
assert(table != NULL);
|
||||||
|
assert(table->nodes != NULL);
|
||||||
|
|
||||||
|
if (table == NULL) return HT_ERROR;
|
||||||
|
if (table->nodes == NULL) return HT_ERROR;
|
||||||
|
|
||||||
|
ht_destroy(table);
|
||||||
|
_ht_allocate(table, HT_MINIMUM_CAPACITY);
|
||||||
|
table->size = 0;
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_is_empty(HashTable* table) {
|
||||||
|
assert(table != NULL);
|
||||||
|
if (table == NULL) return HT_ERROR;
|
||||||
|
return table->size == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ht_is_initialized(HashTable* table) {
|
||||||
|
return table != NULL && table->nodes != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ht_reserve(HashTable* table, size_t minimum_capacity) {
|
||||||
|
assert(ht_is_initialized(table));
|
||||||
|
if (!ht_is_initialized(table)) return HT_ERROR;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We expect the "minimum capacity" to be in elements, not in array indices.
|
||||||
|
* This encapsulates the design.
|
||||||
|
*/
|
||||||
|
if (minimum_capacity > table->threshold) {
|
||||||
|
return _ht_resize(table, minimum_capacity / HT_LOAD_FACTOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************** PRIVATE ******************/
|
||||||
|
|
||||||
|
void _ht_int_swap(size_t* first, size_t* second) {
|
||||||
|
size_t temp = *first;
|
||||||
|
*first = *second;
|
||||||
|
*second = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _ht_pointer_swap(void** first, void** second) {
|
||||||
|
void* temp = *first;
|
||||||
|
*first = *second;
|
||||||
|
*second = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ht_default_compare(void* first_key, void* second_key, size_t key_size) {
|
||||||
|
return memcmp(first_key, second_key, key_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t _ht_default_hash(void* raw_key, size_t key_size) {
|
||||||
|
// djb2 string hashing algorithm
|
||||||
|
// sstp://www.cse.yorku.ca/~oz/hash.ssml
|
||||||
|
size_t byte;
|
||||||
|
size_t hash = 5381;
|
||||||
|
char* key = raw_key;
|
||||||
|
|
||||||
|
for (byte = 0; byte < key_size; ++byte) {
|
||||||
|
// (hash << 5) + hash = hash * 33
|
||||||
|
hash = ((hash << 5) + hash) ^ key[byte];
|
||||||
|
}
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t _ht_hash(const HashTable* table, void* key) {
|
||||||
|
#ifdef HT_USING_POWER_OF_TWO
|
||||||
|
return table->hash(key, table->key_size) & table->capacity;
|
||||||
|
#else
|
||||||
|
return table->hash(key, table->key_size) % table->capacity;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool _ht_equal(const HashTable* table, void* first_key, void* second_key) {
|
||||||
|
return table->compare(first_key, second_key, table->key_size) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool _ht_should_grow(HashTable* table) {
|
||||||
|
assert(table->size <= table->capacity);
|
||||||
|
return table->size == table->capacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool _ht_should_shrink(HashTable* table) {
|
||||||
|
assert(table->size <= table->capacity);
|
||||||
|
return table->size == table->capacity * HT_SHRINK_THRESHOLD;
|
||||||
|
}
|
||||||
|
|
||||||
|
HTNode*
|
||||||
|
_ht_create_node(HashTable* table, void* key, void* value, HTNode* next) {
|
||||||
|
HTNode* node;
|
||||||
|
|
||||||
|
assert(table != NULL);
|
||||||
|
assert(key != NULL);
|
||||||
|
assert(value != NULL);
|
||||||
|
|
||||||
|
if ((node = malloc(sizeof *node)) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if ((node->key = malloc(table->key_size)) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if ((node->value = malloc(table->value_size)) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(node->key, key, table->key_size);
|
||||||
|
memcpy(node->value, value, table->value_size);
|
||||||
|
node->next = next;
|
||||||
|
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ht_push_front(HashTable* table, size_t index, void* key, void* value) {
|
||||||
|
table->nodes[index] = _ht_create_node(table, key, value, table->nodes[index]);
|
||||||
|
return table->nodes[index] == NULL ? HT_ERROR : HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _ht_destroy_node(HTNode* node) {
|
||||||
|
assert(node != NULL);
|
||||||
|
|
||||||
|
free(node->key);
|
||||||
|
free(node->value);
|
||||||
|
free(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ht_adjust_capacity(HashTable* table) {
|
||||||
|
return _ht_resize(table, table->size * HT_GROWTH_FACTOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ht_allocate(HashTable* table, size_t capacity) {
|
||||||
|
if ((table->nodes = malloc(capacity * sizeof(HTNode*))) == NULL) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
memset(table->nodes, 0, capacity * sizeof(HTNode*));
|
||||||
|
|
||||||
|
table->capacity = capacity;
|
||||||
|
table->threshold = capacity * HT_LOAD_FACTOR;
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ht_resize(HashTable* table, size_t new_capacity) {
|
||||||
|
HTNode** old;
|
||||||
|
size_t old_capacity;
|
||||||
|
|
||||||
|
if (new_capacity < HT_MINIMUM_CAPACITY) {
|
||||||
|
if (table->capacity > HT_MINIMUM_CAPACITY) {
|
||||||
|
new_capacity = HT_MINIMUM_CAPACITY;
|
||||||
|
} else {
|
||||||
|
/* NO-OP */
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
old = table->nodes;
|
||||||
|
old_capacity = table->capacity;
|
||||||
|
if (_ht_allocate(table, new_capacity) == HT_ERROR) {
|
||||||
|
return HT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ht_rehash(table, old, old_capacity);
|
||||||
|
|
||||||
|
free(old);
|
||||||
|
|
||||||
|
return HT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _ht_rehash(HashTable* table, HTNode** old, size_t old_capacity) {
|
||||||
|
HTNode* node;
|
||||||
|
HTNode* next;
|
||||||
|
size_t new_index;
|
||||||
|
size_t chain;
|
||||||
|
|
||||||
|
for (chain = 0; chain < old_capacity; ++chain) {
|
||||||
|
for (node = old[chain]; node;) {
|
||||||
|
next = node->next;
|
||||||
|
|
||||||
|
new_index = _ht_hash(table, node->key);
|
||||||
|
node->next = table->nodes[new_index];
|
||||||
|
table->nodes[new_index] = node;
|
||||||
|
|
||||||
|
node = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
113
src/ai/hashtable.h
Normal file
113
src/ai/hashtable.h
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
#ifndef HASHTABLE_H
|
||||||
|
#define HASHTABLE_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Original source: https://github.com/goldsborough/hashtable
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/****************** DEFINTIIONS ******************/
|
||||||
|
|
||||||
|
#define HT_MINIMUM_CAPACITY 8
|
||||||
|
#define HT_LOAD_FACTOR 5
|
||||||
|
#define HT_MINIMUM_THRESHOLD (HT_MINIMUM_CAPACITY) * (HT_LOAD_FACTOR)
|
||||||
|
|
||||||
|
#define HT_GROWTH_FACTOR 2
|
||||||
|
#define HT_SHRINK_THRESHOLD (1 / 4)
|
||||||
|
|
||||||
|
#define HT_ERROR -1
|
||||||
|
#define HT_SUCCESS 0
|
||||||
|
|
||||||
|
#define HT_UPDATED 1
|
||||||
|
#define HT_INSERTED 0
|
||||||
|
|
||||||
|
#define HT_NOT_FOUND 0
|
||||||
|
#define HT_FOUND 01
|
||||||
|
|
||||||
|
#define HT_INITIALIZER {0, 0, 0, 0, 0, NULL, NULL, NULL};
|
||||||
|
|
||||||
|
typedef int (*comparison_t)(void*, void*, size_t);
|
||||||
|
typedef size_t (*hash_t)(void*, size_t);
|
||||||
|
|
||||||
|
/****************** STRUCTURES ******************/
|
||||||
|
|
||||||
|
typedef struct HTNode {
|
||||||
|
struct HTNode* next;
|
||||||
|
void* key;
|
||||||
|
void* value;
|
||||||
|
|
||||||
|
} HTNode;
|
||||||
|
|
||||||
|
typedef struct HashTable {
|
||||||
|
size_t size;
|
||||||
|
size_t threshold;
|
||||||
|
size_t capacity;
|
||||||
|
|
||||||
|
size_t key_size;
|
||||||
|
size_t value_size;
|
||||||
|
|
||||||
|
comparison_t compare;
|
||||||
|
hash_t hash;
|
||||||
|
|
||||||
|
HTNode** nodes;
|
||||||
|
|
||||||
|
} HashTable;
|
||||||
|
|
||||||
|
/****************** INTERFACE ******************/
|
||||||
|
|
||||||
|
/* Setup */
|
||||||
|
int ht_setup(HashTable* table,
|
||||||
|
size_t key_size,
|
||||||
|
size_t value_size,
|
||||||
|
size_t capacity);
|
||||||
|
|
||||||
|
int ht_copy(HashTable* first, HashTable* second);
|
||||||
|
int ht_move(HashTable* first, HashTable* second);
|
||||||
|
int ht_swap(HashTable* first, HashTable* second);
|
||||||
|
|
||||||
|
/* Destructor */
|
||||||
|
int ht_destroy(HashTable* table);
|
||||||
|
|
||||||
|
int ht_insert(HashTable* table, void* key, void* value);
|
||||||
|
|
||||||
|
int ht_contains(HashTable* table, void* key);
|
||||||
|
void* ht_lookup(HashTable* table, void* key);
|
||||||
|
const void* ht_const_lookup(const HashTable* table, void* key);
|
||||||
|
|
||||||
|
#define HT_LOOKUP_AS(type, table_pointer, key_pointer) \
|
||||||
|
(*(type*)ht_lookup((table_pointer), (key_pointer)))
|
||||||
|
|
||||||
|
int ht_erase(HashTable* table, void* key);
|
||||||
|
int ht_clear(HashTable* table);
|
||||||
|
|
||||||
|
int ht_is_empty(HashTable* table);
|
||||||
|
bool ht_is_initialized(HashTable* table);
|
||||||
|
|
||||||
|
int ht_reserve(HashTable* table, size_t minimum_capacity);
|
||||||
|
|
||||||
|
/****************** PRIVATE ******************/
|
||||||
|
|
||||||
|
void _ht_int_swap(size_t* first, size_t* second);
|
||||||
|
void _ht_pointer_swap(void** first, void** second);
|
||||||
|
|
||||||
|
size_t _ht_default_hash(void* key, size_t key_size);
|
||||||
|
int _ht_default_compare(void* first_key, void* second_key, size_t key_size);
|
||||||
|
|
||||||
|
size_t _ht_hash(const HashTable* table, void* key);
|
||||||
|
bool _ht_equal(const HashTable* table, void* first_key, void* second_key);
|
||||||
|
|
||||||
|
bool _ht_should_grow(HashTable* table);
|
||||||
|
bool _ht_should_shrink(HashTable* table);
|
||||||
|
|
||||||
|
HTNode* _ht_create_node(HashTable* table, void* key, void* value, HTNode* next);
|
||||||
|
int _ht_push_front(HashTable* table, size_t index, void* key, void* value);
|
||||||
|
void _ht_destroy_node(HTNode* node);
|
||||||
|
|
||||||
|
int _ht_adjust_capacity(HashTable* table);
|
||||||
|
int _ht_allocate(HashTable* table, size_t capacity);
|
||||||
|
int _ht_resize(HashTable* table, size_t new_capacity);
|
||||||
|
void _ht_rehash(HashTable* table, HTNode** old, size_t old_capacity);
|
||||||
|
|
||||||
|
#endif /* HASHTABLE_H */
|
23
src/ai/node.h
Normal file
23
src/ai/node.h
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef __NODE__
|
||||||
|
#define __NODE__
|
||||||
|
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data structure containing the node information
|
||||||
|
*/
|
||||||
|
struct node_s{
|
||||||
|
int priority;
|
||||||
|
int depth;
|
||||||
|
int num_childs;
|
||||||
|
move_t move;
|
||||||
|
state_t state;
|
||||||
|
struct node_s* parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct node_s node_t;
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
107
src/ai/priority_queue.c
Normal file
107
src/ai/priority_queue.c
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
#include "priority_queue.h"
|
||||||
|
|
||||||
|
int *heap, size, count;
|
||||||
|
|
||||||
|
void heap_init(struct heap* h)
|
||||||
|
{
|
||||||
|
h->count = 0;
|
||||||
|
h->size = initial_size;
|
||||||
|
h->heaparr = (node_t **) malloc(sizeof(node_t*) * initial_size);
|
||||||
|
for(int i = 0; i < initial_size; i++)
|
||||||
|
h->heaparr[i]=NULL;
|
||||||
|
|
||||||
|
if(!h->heaparr) {
|
||||||
|
printf("Error allocatinga memory...\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void max_heapify(node_t** data, int loc, int count) {
|
||||||
|
int left, right, largest;
|
||||||
|
node_t* temp;
|
||||||
|
left = 2*(loc) + 1;
|
||||||
|
right = left + 1;
|
||||||
|
largest = loc;
|
||||||
|
|
||||||
|
|
||||||
|
if (left <= count && data[left]->priority > data[largest]->priority) {
|
||||||
|
largest = left;
|
||||||
|
}
|
||||||
|
if (right <= count && data[right]->priority > data[largest]->priority) {
|
||||||
|
largest = right;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(largest != loc) {
|
||||||
|
temp = data[loc];
|
||||||
|
data[loc] = data[largest];
|
||||||
|
data[largest] = temp;
|
||||||
|
max_heapify(data, largest, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void heap_push(struct heap* h, node_t* value)
|
||||||
|
{
|
||||||
|
int index, parent;
|
||||||
|
|
||||||
|
// Resize the heap if it is too small to hold all the data
|
||||||
|
if (h->count == h->size)
|
||||||
|
{
|
||||||
|
h->size += 1;
|
||||||
|
h->heaparr = realloc(h->heaparr, sizeof(node_t) * h->size);
|
||||||
|
if (!h->heaparr) exit(-1); // Exit if the memory allocation fails
|
||||||
|
}
|
||||||
|
|
||||||
|
index = h->count++; // First insert at last of array
|
||||||
|
|
||||||
|
// Find out where to put the element and put it
|
||||||
|
for(;index; index = parent)
|
||||||
|
{
|
||||||
|
parent = (index - 1) / 2;
|
||||||
|
if (h->heaparr[parent]->priority >= value->priority) break;
|
||||||
|
h->heaparr[index] = h->heaparr[parent];
|
||||||
|
}
|
||||||
|
h->heaparr[index] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void heap_display(struct heap* h, sokoban_t* init_data) {
|
||||||
|
int i;
|
||||||
|
for(i=0; i<h->count; ++i) {
|
||||||
|
node_t* n = h->heaparr[i];
|
||||||
|
|
||||||
|
printf("priority = %d", n->priority);
|
||||||
|
printf("\n");
|
||||||
|
for (int i = 0; i < init_data->lines; i++)
|
||||||
|
mvprintw(i, 0, n->state.map[i]);
|
||||||
|
move(n->state.player_y, n->state.player_x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
node_t* heap_delete(struct heap* h)
|
||||||
|
{
|
||||||
|
node_t* removed;
|
||||||
|
node_t* temp = h->heaparr[--h->count];
|
||||||
|
|
||||||
|
|
||||||
|
if ((h->count <= (h->size + 2)) && (h->size > initial_size))
|
||||||
|
{
|
||||||
|
h->size -= 1;
|
||||||
|
h->heaparr = realloc(h->heaparr, sizeof(node_t) * h->size);
|
||||||
|
if (!h->heaparr) exit(-1); // Exit if the memory allocation fails
|
||||||
|
}
|
||||||
|
removed = h->heaparr[0];
|
||||||
|
h->heaparr[0] = temp;
|
||||||
|
if(temp == removed) h->heaparr[0] = NULL;
|
||||||
|
max_heapify(h->heaparr, 0, h->count);
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void emptyPQ(struct heap* pq) {
|
||||||
|
while(pq->count != 0) {
|
||||||
|
node_t* n = heap_delete(pq);
|
||||||
|
free(n);
|
||||||
|
//printf("<<%d", heap_delete(pq));
|
||||||
|
}
|
||||||
|
}
|
39
src/ai/priority_queue.h
Normal file
39
src/ai/priority_queue.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#ifndef __PQ__
|
||||||
|
#define __PQ__
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NIR: Adapted from https://gist.github.com/aatishnn/8265656#file-binarymaxheap-c
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <curses.h>
|
||||||
|
#include "node.h"
|
||||||
|
#include "../../include/sokoban.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* size is the allocated size, count is the number of elements in the queue
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct heap {
|
||||||
|
int size;
|
||||||
|
int count;
|
||||||
|
node_t** heaparr;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define initial_size 4
|
||||||
|
|
||||||
|
void heap_init(struct heap* h);
|
||||||
|
|
||||||
|
void max_heapify(node_t** data, int loc, int count);
|
||||||
|
|
||||||
|
void heap_push(struct heap* h, node_t* value);
|
||||||
|
|
||||||
|
void heap_display(struct heap *h, sokoban_t *init_data);
|
||||||
|
|
||||||
|
node_t* heap_delete(struct heap* h);
|
||||||
|
|
||||||
|
void emptyPQ(struct heap* pq);
|
||||||
|
|
||||||
|
#endif
|
348
src/ai/utils.c
Normal file
348
src/ai/utils.c
Normal file
|
@ -0,0 +1,348 @@
|
||||||
|
#include <curses.h>
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************
|
||||||
|
* Box movement given a state state *
|
||||||
|
***************************************/
|
||||||
|
|
||||||
|
bool is_goal_loc(int y, int x, sokoban_t* init_data)
|
||||||
|
{
|
||||||
|
return (init_data->map_save[y][x] == '.') || (init_data->map_save[y][x] == '+') || (init_data->map_save[y][x] == '*');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool push_box_left(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y][state->player_x-2] == '$' || state->map[state->player_y][state->player_x-2] == '*') {
|
||||||
|
return false;
|
||||||
|
} else if (state->map[state->player_y][state->player_x-2] == '#') {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y][state->player_x-1] = '@';
|
||||||
|
if(state->map[state->player_y][state->player_x-2] == '.')
|
||||||
|
state->map[state->player_y][state->player_x-2] = '*';
|
||||||
|
else
|
||||||
|
state->map[state->player_y][state->player_x-2] = '$';
|
||||||
|
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_x--;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool push_box_right(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y][state->player_x+2] == '$' || state->map[state->player_y][state->player_x+2] == '*') {
|
||||||
|
return false;
|
||||||
|
} else if (state->map[state->player_y][state->player_x+2] == '#') {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y][state->player_x+1] = '@';
|
||||||
|
if(state->map[state->player_y][state->player_x+2] == '.')
|
||||||
|
state->map[state->player_y][state->player_x+2] = '*';
|
||||||
|
else
|
||||||
|
state->map[state->player_y][state->player_x+2] = '$';
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_x++;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool push_box_up(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y-2][state->player_x] == '$' || state->map[state->player_y-2][state->player_x] == '*') {
|
||||||
|
return false;
|
||||||
|
} else if (state->map[state->player_y-2][state->player_x] == '#') {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y-1][state->player_x] = '@';
|
||||||
|
|
||||||
|
if(state->map[state->player_y-2][state->player_x] == '.')
|
||||||
|
state->map[state->player_y-2][state->player_x] = '*';
|
||||||
|
else
|
||||||
|
state->map[state->player_y-2][state->player_x] = '$';
|
||||||
|
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_y--;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool push_box_down(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y+2][state->player_x] == '$' || state->map[state->player_y+2][state->player_x] == '*') {
|
||||||
|
return false;
|
||||||
|
} else if (state->map[state->player_y+2][state->player_x] == '#') {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
state->map[state->player_y+1][state->player_x] = '@';
|
||||||
|
|
||||||
|
if(state->map[state->player_y+2][state->player_x] == '.')
|
||||||
|
state->map[state->player_y+2][state->player_x] = '*';
|
||||||
|
else
|
||||||
|
state->map[state->player_y+2][state->player_x] = '$';
|
||||||
|
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_y++;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************
|
||||||
|
* Player Moves given a state state *
|
||||||
|
***************************************/
|
||||||
|
|
||||||
|
bool move_left_player(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y][state->player_x-1] != '#') {
|
||||||
|
if (state->map[state->player_y][state->player_x-1] == '$' || state->map[state->player_y][state->player_x-1] == '*') {
|
||||||
|
return push_box_left(init_data, state);
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y][state->player_x-1] = '@';
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_x--;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool move_right_player(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y][state->player_x+1] != '#') {
|
||||||
|
if (state->map[state->player_y][state->player_x+1] == '$' || state->map[state->player_y][state->player_x+1] == '*') {
|
||||||
|
return push_box_right(init_data, state);
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y][state->player_x+1] = '@';
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_x++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool move_up_player(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y-1][state->player_x] != '#') {
|
||||||
|
if (state->map[state->player_y-1][state->player_x] == '$' || state->map[state->player_y-1][state->player_x] == '*') {
|
||||||
|
return push_box_up(init_data, state);
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y-1][state->player_x] = '@';
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_y--;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool move_down_player(sokoban_t* init_data,state_t* state)
|
||||||
|
{
|
||||||
|
if (state->map[state->player_y+1][state->player_x] != '#') {
|
||||||
|
if (state->map[state->player_y+1][state->player_x] == '$' || state->map[state->player_y+1][state->player_x] == '*') {
|
||||||
|
return push_box_down(init_data, state);
|
||||||
|
} else {
|
||||||
|
state->map[state->player_y+1][state->player_x] = '@';
|
||||||
|
state->map[state->player_y][state->player_x] = ' ';
|
||||||
|
if (is_goal_loc( state->player_y, state->player_x, init_data) && state->map[state->player_y][state->player_x] == ' ') {
|
||||||
|
state->map[state->player_y][state->player_x] = '.';
|
||||||
|
}
|
||||||
|
state->player_y++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool execute_move_t(sokoban_t* init_data, state_t* state, move_t move) {
|
||||||
|
|
||||||
|
bool player_moved = false;
|
||||||
|
|
||||||
|
//Determine which button is pushed
|
||||||
|
switch (move) {
|
||||||
|
case up:
|
||||||
|
player_moved = move_up_player(init_data, state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case down:
|
||||||
|
player_moved = move_down_player(init_data, state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case left:
|
||||||
|
player_moved = move_left_player(init_data, state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case right:
|
||||||
|
player_moved = move_right_player(init_data, state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return player_moved;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Function: simple_corner_deadlock *
|
||||||
|
* Parameters: sokoban_t* init_data, state_t* state *
|
||||||
|
* Returns: bool *
|
||||||
|
* Description: Check if box has been pusehd into a loc in a corner wall *
|
||||||
|
* and loc != destination *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
bool corner_check(int x, int y, sokoban_t* init_data, state_t* state){
|
||||||
|
// Check if corner
|
||||||
|
if (((state->map[y][x+1] == '#' && state->map[y+1][x] == '#') ||
|
||||||
|
(state->map[y+1][x] == '#' && state->map[y][x-1] == '#') ||
|
||||||
|
(state->map[y][x-1] == '#' && state->map[y-1][x] == '#') ||
|
||||||
|
(state->map[y-1][x] == '#' && state->map[y][x+1] == '#')) &&
|
||||||
|
!is_goal_loc( state->player_y, state->player_x, init_data) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool simple_corner_deadlock(sokoban_t* init_data, state_t* state)
|
||||||
|
{
|
||||||
|
bool deadlock = false;
|
||||||
|
int x = state->player_x;
|
||||||
|
int y = state->player_y;
|
||||||
|
|
||||||
|
if (state->map[state->player_y + 1][state->player_x] == '$'){
|
||||||
|
y = state->player_y + 1;
|
||||||
|
deadlock = corner_check(x, y, init_data, state);
|
||||||
|
}
|
||||||
|
if( state->map[state->player_y-1][state->player_x] == '$'){
|
||||||
|
y = state->player_y - 1;
|
||||||
|
deadlock = corner_check(x, y, init_data, state);
|
||||||
|
}
|
||||||
|
if( state->map[state->player_y][state->player_x+1] == '$'){
|
||||||
|
x = state->player_x + 1;
|
||||||
|
deadlock = corner_check(x, y, init_data, state);
|
||||||
|
}
|
||||||
|
if( state->map[state->player_y][state->player_x-1] == '$'){
|
||||||
|
x = state->player_x - 1;
|
||||||
|
deadlock = corner_check(x, y, init_data, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
return deadlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Function: winning_condition *
|
||||||
|
* Parameters: sokoban_t* init_data, state_t* state *
|
||||||
|
* Returns: bool *
|
||||||
|
* Description: Check if all boxes are in a destination *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
bool winning_condition(sokoban_t* init_data, state_t* state)
|
||||||
|
{
|
||||||
|
|
||||||
|
for (int y = 0; y < init_data->lines; y++) {
|
||||||
|
for (int x = 0; init_data->map_save[y][x] != '\0'; x++) {
|
||||||
|
if (state->map[y][x] == '$')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********
|
||||||
|
* MACROS *
|
||||||
|
*********/
|
||||||
|
#include <string.h>
|
||||||
|
#define TERMINAL_TYPE (strcmp(getenv("TERM"), "xterm") == 0 ? "rxvt" : \
|
||||||
|
getenv("TERM"))
|
||||||
|
|
||||||
|
void play_solution( sokoban_t init_data, char* solution ){
|
||||||
|
|
||||||
|
SCREEN *mainScreen = newterm(TERMINAL_TYPE, stdout, stdin);
|
||||||
|
set_term(mainScreen);
|
||||||
|
int cols = 1;
|
||||||
|
for(int i = 0; i < init_data.lines; i++){
|
||||||
|
if(strlen(init_data.map[i]) > (size_t) cols){
|
||||||
|
cols = strlen(init_data.map[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
WINDOW *mainWindow = newwin(init_data.lines, cols, 0, 0);
|
||||||
|
|
||||||
|
cbreak();
|
||||||
|
noecho();
|
||||||
|
keypad(stdscr, TRUE);
|
||||||
|
clear();
|
||||||
|
|
||||||
|
for (long unsigned int i = 0; i <= strlen(solution); i++) {
|
||||||
|
touchwin(mainWindow);
|
||||||
|
wnoutrefresh(mainWindow);
|
||||||
|
doupdate();
|
||||||
|
refresh();
|
||||||
|
for (int i = 0; i < init_data.lines; i++)
|
||||||
|
mvprintw(i, 0, init_data.map[i]);
|
||||||
|
move(init_data.player_y, init_data.player_x);
|
||||||
|
|
||||||
|
int key_pressed = 0;
|
||||||
|
|
||||||
|
if( solution[i] == 'u' || solution[i] == 'U')
|
||||||
|
key_pressed = KEY_UP;
|
||||||
|
else if( solution[i] == 'd' || solution[i] == 'D')
|
||||||
|
key_pressed = KEY_DOWN;
|
||||||
|
else if( solution[i] == 'l' || solution[i] == 'L')
|
||||||
|
key_pressed = KEY_LEFT;
|
||||||
|
else if( solution[i] == 'r' || solution[i] == 'R')
|
||||||
|
key_pressed = KEY_RIGHT;
|
||||||
|
init_data = key_check(init_data, key_pressed);
|
||||||
|
init_data = check_zone_reset(init_data);
|
||||||
|
usleep(500000);
|
||||||
|
}
|
||||||
|
touchwin(mainWindow);
|
||||||
|
wnoutrefresh(mainWindow);
|
||||||
|
doupdate();
|
||||||
|
refresh();
|
||||||
|
usleep(1500000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_map(sokoban_t* init_data, state_t* state ){
|
||||||
|
initscr();
|
||||||
|
cbreak();
|
||||||
|
noecho();
|
||||||
|
clear();
|
||||||
|
for (int i = 0; i < init_data->lines; i++){
|
||||||
|
mvprintw(i, 0, state->map[i]);
|
||||||
|
move(state->player_y, state->player_x);
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
53
src/ai/utils.h
Normal file
53
src/ai/utils.h
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#ifndef __UTILS__
|
||||||
|
#define __UTILS__
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "../../include/sokoban.h"
|
||||||
|
|
||||||
|
#define SIZE 4
|
||||||
|
#define _XOPEN_SOURCE 500
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data structure containing the information about the game state
|
||||||
|
* representing the state of the game.
|
||||||
|
*/
|
||||||
|
struct state_s{
|
||||||
|
char **map;
|
||||||
|
int player_x;
|
||||||
|
int player_y;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct state_s state_t;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move type
|
||||||
|
*/
|
||||||
|
typedef enum moves{
|
||||||
|
left=0,
|
||||||
|
right=1,
|
||||||
|
up=2,
|
||||||
|
down=3
|
||||||
|
} move_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper functions
|
||||||
|
*/
|
||||||
|
bool execute_move_t(sokoban_t *init_data, state_t *state, move_t move);
|
||||||
|
bool simple_corner_deadlock(sokoban_t *init_data, state_t *state);
|
||||||
|
bool winning_condition(sokoban_t *init_data, state_t *state);
|
||||||
|
void play_solution( sokoban_t init_data, char* solution );
|
||||||
|
void print_map(sokoban_t *init_data, state_t *state);
|
||||||
|
#endif
|
||||||
|
|
34
src/find_player.c
Normal file
34
src/find_player.c
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function for finding the player on the map
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
sokoban_t find_player(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
sokoban.player_x = 0;
|
||||||
|
sokoban.player_y = 0;
|
||||||
|
for (int i = 0; i < sokoban.lines; i++) {
|
||||||
|
for (int j = 0; sokoban.map[i][j] != '\0'; j++) {
|
||||||
|
sokoban = check_if_player(sokoban, i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t check_if_player(sokoban_t sokoban, int y, int x)
|
||||||
|
{
|
||||||
|
if (sokoban.map[y][x] == '@') {
|
||||||
|
sokoban.player_x = x;
|
||||||
|
sokoban.player_y = y;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
20
src/helper.c
Normal file
20
src/helper.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Main function for the my_sokoban
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
|
||||||
|
int helper(void)
|
||||||
|
{
|
||||||
|
my_putstr("USAGE\n");
|
||||||
|
my_putstr(" ./sokoban <-s> map <play_solution>\n\n");
|
||||||
|
my_putstr("DESCRIPTION\n");
|
||||||
|
my_putstr(" Arguments within <> are optional\n");
|
||||||
|
my_putstr(" -s calls the AI solver\n");
|
||||||
|
my_putstr(" play_solution animates the solution found by the AI solver\n");
|
||||||
|
return (0);
|
||||||
|
}
|
29
src/key_check.c
Normal file
29
src/key_check.c
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function that manage key press for sokoban
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
sokoban_t key_check(sokoban_t sokoban, int key)
|
||||||
|
{
|
||||||
|
if (key == KEY_LEFT) {
|
||||||
|
sokoban = move_left(sokoban);
|
||||||
|
}
|
||||||
|
if (key == KEY_RIGHT)
|
||||||
|
sokoban = move_right(sokoban);
|
||||||
|
if (key == KEY_UP)
|
||||||
|
sokoban = move_up(sokoban);
|
||||||
|
if (key == KEY_DOWN)
|
||||||
|
sokoban = move_down(sokoban);
|
||||||
|
if (key == ' ')
|
||||||
|
play(sokoban.base_path);
|
||||||
|
return (sokoban);
|
||||||
|
}
|
41
src/loose_check.c
Normal file
41
src/loose_check.c
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Functions used to check if the game is loosed
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
void loose_check(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if( sokoban.map[sokoban.player_y+1][sokoban.player_x] == '$')
|
||||||
|
storage_loose_check(sokoban.player_y+1, sokoban.player_x, sokoban);
|
||||||
|
if( sokoban.map[sokoban.player_y-1][sokoban.player_x] == '$')
|
||||||
|
storage_loose_check(sokoban.player_y-1, sokoban.player_x, sokoban);
|
||||||
|
if( sokoban.map[sokoban.player_y][sokoban.player_x+1] == '$')
|
||||||
|
storage_loose_check(sokoban.player_y, sokoban.player_x+1, sokoban);
|
||||||
|
if( sokoban.map[sokoban.player_y][sokoban.player_x-1] == '$')
|
||||||
|
storage_loose_check(sokoban.player_y, sokoban.player_x-1, sokoban);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void storage_loose_check(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[y][x] == '$') {
|
||||||
|
if (((sokoban.map[y][x+1] == '#' && sokoban.map[y+1][x] == '#') ||
|
||||||
|
(sokoban.map[y+1][x] == '#' && sokoban.map[y][x-1] == '#') ||
|
||||||
|
(sokoban.map[y][x-1] == '#' && sokoban.map[y-1][x] == '#') ||
|
||||||
|
(sokoban.map[y-1][x] == '#' && sokoban.map[y][x+1] == '#')) &&
|
||||||
|
!is_goal_cell(y, x, sokoban ) ) {
|
||||||
|
endwin();
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
33
src/main.c
Normal file
33
src/main.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Main function for the my_sokoban
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
#include "ai/ai.h"
|
||||||
|
|
||||||
|
int main(int argc, char const **argv)
|
||||||
|
{
|
||||||
|
if (argc < 2 || argc > 4)
|
||||||
|
return (84);
|
||||||
|
if (argv[1][0] == '-' && argv[1][1] == 'h')
|
||||||
|
return(helper());
|
||||||
|
else if (argv[1][0] == '-' && argv[1][1] == 's'){
|
||||||
|
bool show_solution = false;
|
||||||
|
if (argc > 3 && strcmp(argv[3], "play_solution") == 0)
|
||||||
|
show_solution = true;
|
||||||
|
solve(argv[2], show_solution);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (argv[1][0] != '-')
|
||||||
|
return(play(argv[1]));
|
||||||
|
|
||||||
|
return (84);
|
||||||
|
}
|
60
src/map_check.c
Normal file
60
src/map_check.c
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function used to check if a map is valid or not
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
void map_check(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
|
||||||
|
int player = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < sokoban.lines; i++) {
|
||||||
|
for (int j = 0; sokoban.map_save[i][j] != '\0'; j++) {
|
||||||
|
|
||||||
|
check_tile(i, j, sokoban);
|
||||||
|
player += count_player(i, j, sokoban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int check_tile(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map_save[y][x] != '@' && sokoban.map_save[y][x] != '$'
|
||||||
|
&& sokoban.map_save[y][x] != '#' && sokoban.map_save[y][x] != ' '
|
||||||
|
&& sokoban.map_save[y][x] != '\n' && sokoban.map_save[y][x] != '.'
|
||||||
|
&& sokoban.map_save[y][x] != '+' && sokoban.map_save[y][x] != '*')
|
||||||
|
{
|
||||||
|
write(2, "Unknown read character in map\n", 26);
|
||||||
|
exit(84);
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int count_case_number(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (sokoban.map_save[y][x] == '$') {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int count_player(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (sokoban.map_save[y][x] == '@') {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (i);
|
||||||
|
}
|
92
src/map_reading.c
Normal file
92
src/map_reading.c
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Main function for the my_sokoban
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
char *open_map(char const *path)
|
||||||
|
{
|
||||||
|
int reading;
|
||||||
|
char *buffer;
|
||||||
|
|
||||||
|
reading = open(path, O_RDONLY);
|
||||||
|
if (reading == -1) {
|
||||||
|
write(2, "No such file or directory\n", 26);
|
||||||
|
exit (84);
|
||||||
|
}
|
||||||
|
buffer = read_map(reading);
|
||||||
|
close(reading);
|
||||||
|
return (buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *read_map(int reading)
|
||||||
|
{
|
||||||
|
char *buffer = malloc(sizeof(char) * 10000);
|
||||||
|
int size = 32;
|
||||||
|
|
||||||
|
size = read(reading, buffer, 10000);
|
||||||
|
if (size == -1)
|
||||||
|
exit(84);
|
||||||
|
buffer[size] = '\0';
|
||||||
|
return (buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
int count_columns(sokoban_t sokoban, int position)
|
||||||
|
{
|
||||||
|
int columns = 0;
|
||||||
|
|
||||||
|
for (; sokoban.buffer[position] != '\n'; position++) {
|
||||||
|
columns++;
|
||||||
|
}
|
||||||
|
return (columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t count_lines(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
sokoban.lines = 0;
|
||||||
|
|
||||||
|
for (int i = 0; sokoban.buffer[i] != '\0'; i++) {
|
||||||
|
if (sokoban.buffer[i] == '\n' || sokoban.buffer[i] == '\0')
|
||||||
|
sokoban.lines++;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t make_map(char const *path, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
sokoban.buffer = open_map(path);
|
||||||
|
sokoban = count_lines(sokoban);
|
||||||
|
int k = 0;
|
||||||
|
int columns = 0;
|
||||||
|
sokoban.num_chars_map = 0;
|
||||||
|
sokoban.map = malloc(sizeof(char *) * sokoban.lines);
|
||||||
|
sokoban.map_save = malloc(sizeof (char *) * sokoban.lines);
|
||||||
|
for (int j = 0; j < sokoban.lines; j++) {
|
||||||
|
columns = count_columns(sokoban, k);
|
||||||
|
sokoban.num_chars_map += columns;
|
||||||
|
sokoban.map[j] = malloc(sizeof(char) * columns + 1);
|
||||||
|
sokoban.map_save[j] = malloc(sizeof(char) * columns + 1);
|
||||||
|
for (int i = 0; i < columns; i++) {
|
||||||
|
sokoban.map[j][i] = sokoban.buffer[k];
|
||||||
|
sokoban.map_save[j][i] = sokoban.buffer[k];
|
||||||
|
sokoban.map[j][i+1] = '\0';
|
||||||
|
sokoban.map_save[j][i+1] = '\0';
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
int is_goal_cell(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
return (sokoban.map_save[y][x] == '.') || (sokoban.map_save[y][x] == '+') || (sokoban.map_save[y][x] == '*');
|
||||||
|
}
|
152
src/movement.c
Normal file
152
src/movement.c
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function that make the player move
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
|
||||||
|
sokoban_t move_box_left(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x-2] == '$' || sokoban.map[sokoban.player_y][sokoban.player_x-2] == '*') {
|
||||||
|
return (sokoban);
|
||||||
|
} else if (sokoban.map[sokoban.player_y][sokoban.player_x-2] == '#') {
|
||||||
|
return (sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x-1] = '@';
|
||||||
|
|
||||||
|
if(sokoban.map[sokoban.player_y][sokoban.player_x-2] == '.')
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x-2] = '*';
|
||||||
|
else
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x-2] = '$';
|
||||||
|
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_x--;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_box_right(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x+2] == '$' || sokoban.map[sokoban.player_y][sokoban.player_x+2] == '*') {
|
||||||
|
return (sokoban);
|
||||||
|
} else if (sokoban.map[sokoban.player_y][sokoban.player_x+2] == '#') {
|
||||||
|
return (sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x+1] = '@';
|
||||||
|
|
||||||
|
if(sokoban.map[sokoban.player_y][sokoban.player_x+2] == '.')
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x+2] = '*';
|
||||||
|
else
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x+2] = '$';
|
||||||
|
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_x++;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_box_up(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y-2][sokoban.player_x] == '$' || sokoban.map[sokoban.player_y-2][sokoban.player_x] == '*') {
|
||||||
|
return (sokoban);
|
||||||
|
} else if (sokoban.map[sokoban.player_y-2][sokoban.player_x] == '#') {
|
||||||
|
return (sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y-1][sokoban.player_x] = '@';
|
||||||
|
|
||||||
|
if(sokoban.map[sokoban.player_y-2][sokoban.player_x] == '.')
|
||||||
|
sokoban.map[sokoban.player_y-2][sokoban.player_x] = '*';
|
||||||
|
else
|
||||||
|
sokoban.map[sokoban.player_y-2][sokoban.player_x] = '$';
|
||||||
|
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_y--;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_box_down(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y+2][sokoban.player_x] == '$' || sokoban.map[sokoban.player_y+2][sokoban.player_x] == '*') {
|
||||||
|
return (sokoban);
|
||||||
|
} else if (sokoban.map[sokoban.player_y+2][sokoban.player_x] == '#') {
|
||||||
|
return (sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y+1][sokoban.player_x] = '@';
|
||||||
|
|
||||||
|
if(sokoban.map[sokoban.player_y+2][sokoban.player_x] == '.')
|
||||||
|
sokoban.map[sokoban.player_y+2][sokoban.player_x] = '*';
|
||||||
|
else
|
||||||
|
sokoban.map[sokoban.player_y+2][sokoban.player_x] = '$';
|
||||||
|
|
||||||
|
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_y++;
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sokoban_t move_left(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x-1] != '#') {
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x-1] == '$' || sokoban.map[sokoban.player_y][sokoban.player_x-1] == '*') {
|
||||||
|
sokoban = move_box_left(sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x-1] = '@';
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_x--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_right(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x+1] != '#') {
|
||||||
|
if (sokoban.map[sokoban.player_y][sokoban.player_x+1] == '$' || sokoban.map[sokoban.player_y][sokoban.player_x+1] == '*') {
|
||||||
|
sokoban = move_box_right(sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x+1] = '@';
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_x++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_up(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y-1][sokoban.player_x] != '#') {
|
||||||
|
if (sokoban.map[sokoban.player_y-1][sokoban.player_x] == '$' || sokoban.map[sokoban.player_y-1][sokoban.player_x] == '*') {
|
||||||
|
sokoban = move_box_up(sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y-1][sokoban.player_x] = '@';
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_y--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t move_down(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if (sokoban.map[sokoban.player_y+1][sokoban.player_x] != '#') {
|
||||||
|
if (sokoban.map[sokoban.player_y+1][sokoban.player_x] == '$' || sokoban.map[sokoban.player_y+1][sokoban.player_x] == '*') {
|
||||||
|
sokoban = move_box_down(sokoban);
|
||||||
|
} else {
|
||||||
|
sokoban.map[sokoban.player_y+1][sokoban.player_x] = '@';
|
||||||
|
sokoban.map[sokoban.player_y][sokoban.player_x] = ' ';
|
||||||
|
sokoban.player_y++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
83
src/play.c
Normal file
83
src/play.c
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function that manage the game
|
||||||
|
** ----------
|
||||||
|
** Adapted by Nir Lipo, 2021
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
/*********
|
||||||
|
* MACROS *
|
||||||
|
*********/
|
||||||
|
#include <string.h>
|
||||||
|
#define TERMINAL_TYPE (strcmp(getenv("TERM"), "xterm") == 0 ? "rxvt" : \
|
||||||
|
getenv("TERM"))
|
||||||
|
SCREEN *mainScreen = NULL;
|
||||||
|
WINDOW *mainWindow = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
int play(char const *path)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Load Map
|
||||||
|
*/
|
||||||
|
sokoban_t sokoban = make_map(path, sokoban);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count number of boxes and Storage locations
|
||||||
|
*/
|
||||||
|
map_check(sokoban);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locate player x,y position
|
||||||
|
*/
|
||||||
|
sokoban = find_player(sokoban);
|
||||||
|
|
||||||
|
sokoban.base_path = path;
|
||||||
|
|
||||||
|
mainScreen = newterm(TERMINAL_TYPE, stdout, stdin);
|
||||||
|
set_term(mainScreen);
|
||||||
|
int cols = 1;
|
||||||
|
for(int i = 0; i < sokoban.lines; i++){
|
||||||
|
if(strlen(sokoban.map[i]) > (size_t) cols){
|
||||||
|
cols = strlen(sokoban.map[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mainWindow = newwin(sokoban.lines, cols, 0, 0);
|
||||||
|
|
||||||
|
cbreak();
|
||||||
|
noecho();
|
||||||
|
keypad(stdscr, TRUE);
|
||||||
|
clear();
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
// Do explicit refresh of window so no corruption occurs
|
||||||
|
touchwin(mainWindow);
|
||||||
|
wnoutrefresh(mainWindow);
|
||||||
|
doupdate();
|
||||||
|
for (int i = 0; i < sokoban.lines; i++)
|
||||||
|
mvprintw(i, 0, sokoban.map[i]);
|
||||||
|
move(sokoban.player_y, sokoban.player_x);
|
||||||
|
sokoban = game_management(sokoban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t game_management(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
int key_pressed = 0;
|
||||||
|
|
||||||
|
key_pressed = getch();
|
||||||
|
sokoban = key_check(sokoban, key_pressed);
|
||||||
|
sokoban = check_zone_reset(sokoban);
|
||||||
|
loose_check(sokoban);
|
||||||
|
win_check(sokoban);
|
||||||
|
return (sokoban);
|
||||||
|
}
|
27
src/win_check.c
Normal file
27
src/win_check.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Function that check if the game is won
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
void win_check(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < sokoban.lines; i++) {
|
||||||
|
for (int j = 0; sokoban.map_save[i][j] != '\0'; j++) {
|
||||||
|
if (sokoban.map[i][j] == '$')
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endwin();
|
||||||
|
exit (0);
|
||||||
|
|
||||||
|
}
|
34
src/zone_check.c
Normal file
34
src/zone_check.c
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
** EPITECH PROJECT, 2017
|
||||||
|
** PSU_my_sokoban_2017
|
||||||
|
** File description:
|
||||||
|
** Check zone
|
||||||
|
** ----------
|
||||||
|
** Adpated by Nir 2021
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include "../include/libmy.h"
|
||||||
|
#include "../include/sokoban.h"
|
||||||
|
|
||||||
|
sokoban_t check_zone_reset(sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
sokoban = reset_zone(sokoban.player_y+1, sokoban.player_x, sokoban);
|
||||||
|
sokoban = reset_zone(sokoban.player_y-1, sokoban.player_x, sokoban);
|
||||||
|
sokoban = reset_zone(sokoban.player_y, sokoban.player_x+1, sokoban);
|
||||||
|
sokoban = reset_zone(sokoban.player_y, sokoban.player_x-1, sokoban);
|
||||||
|
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
||||||
|
sokoban_t reset_zone(int y, int x, sokoban_t sokoban)
|
||||||
|
{
|
||||||
|
if ( is_goal_cell(y, x, sokoban ) && sokoban.map[y][x] == ' ') {
|
||||||
|
sokoban.map[y][x] = '.';
|
||||||
|
return(sokoban);
|
||||||
|
}
|
||||||
|
return (sokoban);
|
||||||
|
}
|
||||||
|
|
3
test_maps/capability1
Normal file
3
test_maps/capability1
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#####
|
||||||
|
#@$.#
|
||||||
|
#####
|
3
test_maps/capability10
Normal file
3
test_maps/capability10
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
###########
|
||||||
|
#.$ @ $.#
|
||||||
|
###########
|
5
test_maps/capability11
Normal file
5
test_maps/capability11
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
##########
|
||||||
|
###### *##
|
||||||
|
# $ *.#
|
||||||
|
# $@ *.#
|
||||||
|
##########
|
11
test_maps/capability12
Normal file
11
test_maps/capability12
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
##########
|
||||||
|
# .#
|
||||||
|
# #######
|
||||||
|
## #
|
||||||
|
## ### #
|
||||||
|
####### ##
|
||||||
|
# ##
|
||||||
|
# $### ##
|
||||||
|
##@#######
|
||||||
|
##########
|
||||||
|
##########
|
5
test_maps/capability2
Normal file
5
test_maps/capability2
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
###
|
||||||
|
#@#
|
||||||
|
#$#
|
||||||
|
#.#
|
||||||
|
###
|
3
test_maps/capability3
Normal file
3
test_maps/capability3
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#####
|
||||||
|
#.$@#
|
||||||
|
#####
|
5
test_maps/capability4
Normal file
5
test_maps/capability4
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
###
|
||||||
|
#.#
|
||||||
|
#$#
|
||||||
|
#@#
|
||||||
|
###
|
6
test_maps/capability5
Normal file
6
test_maps/capability5
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#####
|
||||||
|
# @ #
|
||||||
|
# #
|
||||||
|
# $ #
|
||||||
|
# . #
|
||||||
|
#####
|
6
test_maps/capability6
Normal file
6
test_maps/capability6
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#####
|
||||||
|
# . #
|
||||||
|
# $ #
|
||||||
|
# #
|
||||||
|
# @ #
|
||||||
|
#####
|
6
test_maps/capability7
Normal file
6
test_maps/capability7
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#####
|
||||||
|
# .#
|
||||||
|
# $##
|
||||||
|
# ##
|
||||||
|
##@##
|
||||||
|
#####
|
6
test_maps/capability8
Normal file
6
test_maps/capability8
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#####
|
||||||
|
#. #
|
||||||
|
##$ #
|
||||||
|
## #
|
||||||
|
###@#
|
||||||
|
#####
|
9
test_maps/capability9
Normal file
9
test_maps/capability9
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#####
|
||||||
|
##.##
|
||||||
|
##$##
|
||||||
|
## ##
|
||||||
|
##@##
|
||||||
|
## ##
|
||||||
|
##$##
|
||||||
|
##.##
|
||||||
|
#####
|
3
test_maps/test_map1
Normal file
3
test_maps/test_map1
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
############
|
||||||
|
# @ $ .#
|
||||||
|
############
|
7
test_maps/test_map2
Normal file
7
test_maps/test_map2
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
########################
|
||||||
|
# $ .#
|
||||||
|
# #######
|
||||||
|
# $ @ . #######
|
||||||
|
# #######
|
||||||
|
# . $ #######
|
||||||
|
########################
|
11
test_maps/test_map3
Normal file
11
test_maps/test_map3
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
####
|
||||||
|
# ######
|
||||||
|
# #
|
||||||
|
## #### #
|
||||||
|
#@* ### ##
|
||||||
|
# * ## #
|
||||||
|
## * # ##
|
||||||
|
## .$# #
|
||||||
|
## #
|
||||||
|
#### #
|
||||||
|
####
|
Loading…
Reference in a new issue