Last active
August 14, 2021 04:32
-
-
Save yosshy/e4caa177658f9e1e22765c22a4847961 to your computer and use it in GitHub Desktop.
海外君の娘さんの朝のドリル solver
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import sys | |
MAZE = [ | |
"--------", | |
"-○○◎■□□ア", | |
"-□□×□△◎-", | |
"-■□□××△-", | |
"-○△◎□◎×-", | |
"-×◎×○○△-", | |
"イ◎◎△◎■○-", | |
"--ウ---エ-" | |
] | |
# マス目を進む | |
def walk(x, y, route): | |
if x < 0 or x > 7 or y < 0 or y > 7: | |
# 迷路の外にはみ出してはいけない | |
print(f"{route} → {(x, y)}") | |
print ("迷路からはみ出した") | |
return | |
mark = MAZE[y][x] | |
print(f"{route} → {(x, y, mark)}") | |
if mark == "-": | |
# --の部分を通ることはできない。 | |
print ("迷路からはみ出した") | |
return | |
if (x, y, mark) in route: | |
# 同じますに2回進んでもムダ。 | |
print("一度通った") | |
return | |
if mark == "○": | |
# ○の次は、下に1ます進む。 | |
walk(x, y + 1, route + [(x, y, mark)]) | |
elif mark == "△": | |
# △の次は、上に1ます進む。 | |
walk(x, y - 1, route + [(x, y, mark)]) | |
elif mark == "□": | |
# □の次は、右か左に2ます進む。 | |
walk(x + 2, y, route + [(x, y, mark)]) | |
walk(x - 2, y, route + [(x, y, mark)]) | |
elif mark == "×": | |
# ×の次は、上か下に2ます進む。 | |
walk(x, y - 2, route + [(x, y, mark)]) | |
walk(x, y + 2, route + [(x, y, mark)]) | |
elif mark == "◎": | |
# ◎の次は、左に1ます進む。 | |
walk(x - 1, y, route + [(x, y, mark)]) | |
elif mark == "■": | |
# 黒いますに進むことはできない。 | |
print("進めない") | |
else: | |
# やじるしについた。 | |
print(f"[{mark}]のやじるしから出る。") | |
sys.exit(0) | |
return | |
walk(1, 1, []) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
python maze.py | |
[] → (1, 1, '○') | |
[(1, 1, '○')] → (1, 2, '□') | |
[(1, 1, '○'), (1, 2, '□')] → (3, 2, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×')] → (3, 0, '-') | |
迷路からはみ出した | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×')] → (3, 4, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎')] → (2, 4, '△') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△')] → (2, 3, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□')] → (4, 3, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×')] → (4, 1, '■') | |
進めない | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×')] → (4, 5, '○') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○')] → (4, 6, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎')] → (3, 6, '△') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△')] → (3, 5, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×')] → (3, 3, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□')] → (5, 3, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×')] → (5, 1, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□')] → (7, 1, 'ア') | |
[ア]のやじるしから出る。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[] → (1, 1, '○') | |
[(1, 1, '○')] → (1, 2, '□') | |
[(1, 1, '○'), (1, 2, '□')] → (-1, 2) | |
迷路からはみ出した | |
[(1, 1, '○'), (1, 2, '□')] → (3, 2, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×')] → (3, 4, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎')] → (2, 4, '△') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△')] → (2, 3, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□')] → (0, 3, '-') | |
迷路からはみ出した | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□')] → (4, 3, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×')] → (4, 5, '○') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○')] → (4, 6, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎')] → (3, 6, '△') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△')] → (3, 5, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×')] → (3, 7, '-') | |
迷路からはみ出した | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×')] → (3, 3, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□')] → (1, 3, '■') | |
進めない | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□')] → (5, 3, '×') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×')] → (5, 5, '○') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 5, '○')] → (5, 6, '■') | |
進めない | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×')] → (5, 1, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□')] → (3, 1, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎')] → (2, 1, '○') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○')] → (2, 2, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□')] → (0, 2, '-') | |
迷路からはみ出した | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□')] → (4, 2, '□') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□'), (4, 2, '□')] → (2, 2, '□') | |
一度通った | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□'), (4, 2, '□')] → (6, 2, '◎') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□'), (4, 2, '□'), (6, 2, '◎')] → (5, 2, '△') | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□'), (3, 1, '◎'), (2, 1, '○'), (2, 2, '□'), (4, 2, '□'), (6, 2, '◎'), (5, 2, '△')] → (5, 1, '□') | |
一度通った | |
[(1, 1, '○'), (1, 2, '□'), (3, 2, '×'), (3, 4, '◎'), (2, 4, '△'), (2, 3, '□'), (4, 3, '×'), (4, | |
5, '○'), (4, 6, '◎'), (3, 6, '△'), (3, 5, '×'), (3, 3, '□'), (5, 3, '×'), (5, 1, '□')] → (7, 1, 'ア') | |
[ア]のやじるしから出る。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment