前提・実現したいこと
Pythonでラングトンのアリのみたいなコードを書きたいです。
2匹の蟻がグリッドを這い回るプログラムのことですが、各蟻は一定の方法でグリッドを動きます。
- グリッドの大きさはユーザーに入力されて作らせます。
- 蟻は最初にランダムに生成された場所から、ランダムに指定された方向に1マス前方に移動します。次の地点に到着すると右に90°回転します。
- そして、最初の地点の除き、蟻が歩いた場所は黒く(✴︎)なり、次にアリが黒くなった場所を通ると左に90°回転して進みます。(黒くなったところを通るとそのマスは元に戻る(白くなる))
- ボード外に移動した蟻は、シミュレーションから削除されます。
- そして、一匹目の蟻が黒くなったところを歩くと蟻2が生成し、移動を開始します。
- 蟻が最初に配置された場所は白から始まります。
- 更新されたグリッドを毎秒ユーザーに表示します。両方のアリが指定されたグリッドの外に出たら、プログラムを終了します。
試したこと
色々試して、グリッドに最初の蟻をランダムに表示できましたがそのあとがコードがどうにも思いつけないのです...教えて頂けると幸いです。
※蟻をAとして表示しています
python
1import random 2import time 3 4width = int(input("State the width of the grid: ")) 5height = int(input("State the height of the grid: ")) 6 7symbols = ["A"] 8grid = {} 9 10for y in range(height): 11 for x in range(width): 12 coordinate = (x, y) 13 grid[coordinate] = " " 14 15for element in range(1): 16 place, ant_one_place = random.choice(list(grid.items())) 17 ant_one_direction = random.choice(symbols) 18 grid[place] = ant_one_direction 19 20def print_grid(): 21 for y in range(height): 22 for i in range(width): 23 print("+---", end="") 24 print("+") 25 for x in range(width): 26 if x == 0: 27 print("|", end="") 28 coordinate = (x, y) 29 print("", grid[coordinate], end=" |") 30 if y != height: 31 print("") 32 for i in range(width): 33 print("+---", end="") 34 print("+") 35 36 37print_grid()
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11235828806
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10235834970
以下ご対応ください。
https://teratail.com/help#posted-otherservice