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