This commit is contained in:
Timo Schmidt 2023-04-04 14:35:16 +02:00
commit d923fbf84d
5 changed files with 109 additions and 0 deletions

24
assets/genmap.pl Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/perl
use warnings;
use strict;
die "program x y density" unless (scalar(@ARGV) == 3);
my ($x, $y, $density) = @ARGV;
my $empty = ".";
my $obstc = "X";
my $full = "#";
print "$y${empty}${obstc}${full}\n";
for (my $i = 0; $i < $y; $i++) {
for (my $j = 0; $j < $x; $j++) {
if (int(rand($y) * 2) < $density) {
print $obstc;
}
else {
print $empty;
}
}
print "\n";
}

11
assets/map1 Normal file
View File

@ -0,0 +1,11 @@
10.X#
.X......X.........X.
.X...X......X.X.....
X..X......X........X
....X..X...X........
.......X........X.X.
......X......X......
.............X......
..X.X..........X....
..........X.........
...X.........X..X.X.

11
assets/map2 Normal file
View File

@ -0,0 +1,11 @@
10.X#
.XX.....XX..........
..X...X...X..X......
X.X......XXXX.......
.....X..............
......X...X.......XX
X...XX.........X.X..
..................X.
....X...X..XX....X..
..............X..X..
........X......X.X..

11
assets/map3 Normal file
View File

@ -0,0 +1,11 @@
10.X#
.........X.X........
X.....X.......X.....
.X........XXX..X....
...X..XX.....X......
.....X.....X.....X..
..X.........X....X..
......X....X.X......
...........X....X.X.
XX..................
....X.....X...X...X.

52
assets/solve.py Executable file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
import sys
def main():
with open(sys.argv[1]) as b:
board = b.read().splitlines()
try:
first_line = board[0][::-1]
except:
print("map error")
sys.exit(1)
board = board[1:]
full = first_line[0]
obstc = first_line[1]
empty = first_line[2]
try:
num = int(first_line[3:][::-1])
except:
print("map error")
sys.exit(2)
if len(board) != num:
print("map error")
sys.exit(3)
first_line_len = len(board[0])
if any(first_line_len != len(line) for line in board):
print("map error")
sys.exit(4)
converted_board = []
for i, line in enumerate(board):
converted_board.append(list(line))
for i in range(len(board)):
for j in range(first_line_len):
val = board[i][j]
if i < 1:
top = 0
else:
top = converted_board[i - 1][j]
if j < 1:
left = 0
else:
left = converted_board[i][j - 1]
if j < 1 or i < 1:
top_left = 0
else:
top_left = converted_board[i - 1][j - 1]
converted_board[i][j] = str(int(val == obstc)) + left + top + top_left
print(end=converted_board[i][j])
print()
if __name__ == '__main__':
main()