騎士(チェス)の動きを教えてくれるプログラムを書きました。たとえば、考えられるすべての動きを知りたい場合は、次のように入力します。
possibilites("F4")
結果として、わかりまし['D3', 'D5', 'E2', 'E6', 'G2', 'G6', 'H3', 'H5']
た。次に、2 つのフィールドを入力する関数を作成する必要がありました。これらのフィールドが有効な場合は True を取得し、そうでない場合は次の値を取得します。 False (以前の関数を使用する必要がありました)。例えば:
legal("F4","D3")
>>>True
コード:
def legal(field1,field2):
c=possibilities(field1)
if field1 and field2 in a:
return True
return False
私が書かなければならない次の関数に問題があります。騎士のパスを入力する必要があり、関数はそれが正当なパスであるかどうかを教えてくれる必要があります。前の関数を使用する義務があります。
例えば:
>>> legal_way(["F3", "E1", "G2", "H4", "F5"])
True
>>> legal_way(["F3", "E1", "G3", "H5"])
False
>>> legal_way(["B4"])
True
リストをループして最初と 2 番目の項目を入れる必要があることはわかっています。legal(field1,field2)
それが false の場合はすべて false ですが、true の場合は最後まで続行する必要があり、これは 1 つしかない場合でも機能する必要があります。分野。立ち往生しています。どうすればよいですか?
def legal_way(way):
a=len(way)
for i in range(0,a-2):
if a==1:
return true
else:
if legal(way[i],way[i+1]):
return True
return False
そして、Trueまたは範囲外のインデックスを取得します