エイトクイーン問題
質問:チェスボードは8×8の正方形で、各正方形のジェリーは、作品を置きます。女王このような小片は、同じ行またはピース上の同じ列または斜め(左下、右上、右下、左上四方向)を攻撃することができます。あなたは、彼らがお互いを攻撃できないように、8人の王妃を入れたい場合はボード上で(さらに)レイアウトの種類を取得し、(すなわちない異なる対応の任意の異なる列は、任意の2つの間のスラッシュ)。
[出典:https://www.cnblogs.com/franknihao/p/9416145.html]詳細および実装に説明
1 DEF (ボード、行、列)を確認: 2 I = 0 3 ながら、 iは< 行: 4の 場合、ABS(COL-ボード[I])における(0、ABS(行優先I)): 5 リターン偽 6 I + = 1つの 7 リターン真
1 DEF EightQueen(ボード、行): 2 = BLEN LEN(基板) 3 であれば、行== BLEN: 4 プリント(基板) 5 リターン真 6 COL = 0 7 一方 COL < BLEN: 8 もしチェック(ボード、行、列): 9 ボード[行] = COL 10 なら EightQueen(ボード、行+ 1 ): 11 リターン真 12 COL + = 1つの 13 リターン偽
1 DEF printBoard(ボード): 2 インポートSYS 3 用の I、COL に列挙(ボード): 4 sys.stdout.write(' □ ' * COL + ' ■ ' + ' □ ' *(LEN(ボード) - 1 - COL)) 5 プリント()
主な機能の呼び出し:
1枚のボード= [0] * 8 用の行における範囲(8 )] 2 EightQueen(ボード、0) 3 printBoard(基板)
結果:
1 [0、4、7、5、2、6、1、3 ] 2 ■□□□□□□□ 3 □□□□■□□□ 4 □□□□□□□■ 5 □□□□ □■□□ 6 □□■□□□□□ 7 □□□□□□■□ 8 □■□□□□□□ 9 □□□■□□□□
このコードは、唯一の出力結果は、実際にはより多くのN-クイーン問題の解決策があることができます。