1

騎士(チェス)の動きを教えてくれるプログラムを書きました。たとえば、考えられるすべての動きを知りたい場合は、次のように入力します。

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または範囲外のインデックスを取得します

4

1 に答える 1

2

legal_wayこの方法の適切な解決策は次のとおりだと思います。

  1. パス項目を含むlen配列パラメータの長さを決定します。param
  2. 0からまで反復し、各反復で、メソッドが( , )を返すlen - 2かどうかを確認しますlegalTrueparam[i]param[i+1]

の長さがいつでparamある0かについて特別な条件を含める必要があります1

それはそれと同じくらい簡単なはずです-頑張ってください!

于 2012-11-11T22:27:29.543 に答える