#!/usr/bin/env python3
from random import randint
# 大域変数定義
empty = '□'
wall = '■'
right, down, left, up, = 0 , 1 , 2 , 3
direction = [ right, down, left, up]
# フィールド作成
def make_field( x, y) :
return [ [ wall if i == 0 or i == x - 1 or j == 0 or j == y - 1 or ( i % 2 == 0 and j % 2 == 0 ) else empty for j in range ( y) ] for i in range ( x) ]
# サイコロ定義
def dice( n) :
return direction[ randint( 0 , n - 1 ) ]
# 条件により n 面体サイコロが代わり、
# 変換されたリストのどこを変更するか決める
def select ( n, i, j, field) :
direction = dice( n)
match direction:
case 0 :
i += 1
case 1 :
i -= 1
case 2 :
j += 1
case 3 :
j -= 1
field[ i] [ j] = wall
# maze(迷路)作成
def make_maze( field) :
for i in range ( 2 , len ( field) - 1 , 2 ) :
for j in range ( 2 , len ( field[ 0 ] ) - 1 , 2 ) :
if i == 2 :
select ( 4 , i, j, field)
elif field[ i] [ j - 1 ] == wall:
select ( 2 , i, j, field)
else :
select ( 3 , i, j, field)
return field
# フィールド(迷路)を文字列に変換
def maze2string( maze) :
return '' .join ( [ '' .join ( i) + '\n ' for i in maze] )
if __name__ == '__main__' :
print ( maze2string( make_maze( make_field( 11 , 11 ) ) ) )
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKCiMg5aSn5Z+f5aSJ5pWw5a6a576pCmVtcHR5ID0gJ+KWoScKd2FsbCA9ICfilqAnCnJpZ2h0LCBkb3duLCBsZWZ0LCB1cCwgPSAwLCAxLCAyLCAzCmRpcmVjdGlvbiA9IFtyaWdodCwgZG93biwgbGVmdCwgdXBdCgojIOODleOCo+ODvOODq+ODieS9nOaIkApkZWYgbWFrZV9maWVsZCh4LCB5KToKICAgIHJldHVybiBbW3dhbGwgaWYgaSA9PSAwIG9yIGkgPT0geCAtIDEgb3IgaiA9PSAwIG9yIGogPT0geSAtIDEgb3IgKGkgJSAyID09IDAgYW5kIGogJSAyID09IDApIGVsc2UgZW1wdHkgZm9yIGogaW4gcmFuZ2UoeSldIGZvciBpIGluIHJhbmdlKHgpXQoKIyDjgrXjgqTjgrPjg63lrprnvqkKZGVmIGRpY2Uobik6CiAgICByZXR1cm4gZGlyZWN0aW9uW3JhbmRpbnQoMCwgbiAtIDEpXQoKIyDmnaHku7bjgavjgojjgoogbiDpnaLkvZPjgrXjgqTjgrPjg63jgYzku6Pjgo/jgorjgIEKIyDlpInmj5vjgZXjgozjgZ/jg6rjgrnjg4jjga7jganjgZPjgpLlpInmm7TjgZnjgovjgYvmsbrjgoHjgosKZGVmIHNlbGVjdChuLCBpLCBqLCBmaWVsZCk6CiAgICBkaXJlY3Rpb24gPSBkaWNlKG4pCiAgICBtYXRjaCBkaXJlY3Rpb246CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgICBpICs9IDEKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGkgLT0gMQogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgaiArPSAxCiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBqIC09IDEKICAgIGZpZWxkW2ldW2pdID0gd2FsbAoKIyBtYXplKOi/t+i3rynkvZzmiJAKZGVmIG1ha2VfbWF6ZShmaWVsZCk6CiAgICBmb3IgaSBpbiByYW5nZSgyLCBsZW4oZmllbGQpIC0gMSwgMik6CiAgICAgICAgZm9yIGogaW4gcmFuZ2UoMiwgbGVuKGZpZWxkWzBdKSAtIDEsIDIpOgogICAgICAgICAgICBpZiBpID09IDI6CiAgICAgICAgICAgICAgICBzZWxlY3QoNCwgaSwgaiwgZmllbGQpCiAgICAgICAgICAgIGVsaWYgZmllbGRbaV1baiAtIDFdID09IHdhbGw6CiAgICAgICAgICAgICAgICBzZWxlY3QoMiwgaSwgaiwgZmllbGQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxlY3QoMywgaSwgaiwgZmllbGQpCiAgICByZXR1cm4gZmllbGQKCiMg44OV44Kj44O844Or44OJKOi/t+i3rynjgpLmloflrZfliJfjgavlpInmj5sKZGVmIG1hemUyc3RyaW5nKG1hemUpOgogICAgcmV0dXJuICcnLmpvaW4oWycnLmpvaW4oaSkgKyAnXG4nIGZvciBpIGluIG1hemVdKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHByaW50KG1hemUyc3RyaW5nKG1ha2VfbWF6ZShtYWtlX2ZpZWxkKDExLCAxMSkpKSkK
compilation info
Traceback (most recent call last):
File "/usr/lib/python3.9/py_compile.py", line 144, in compile
code = loader.source_to_code(source_bytes, dfile or file,
File "<frozen importlib._bootstrap_external>", line 918, in source_to_code
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "./prog.py", line 23
match direction:
^
SyntaxError: invalid syntax
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.9/py_compile.py", line 150, in compile
raise py_exc
py_compile.PyCompileError: File "./prog.py", line 23
match direction:
^
SyntaxError: invalid syntax
stdout