回答編集履歴

1

追記

2020/11/10 18:42

投稿

episteme
episteme

スコア16614

test CHANGED
@@ -47,3 +47,57 @@
47
47
 
48
48
 
49
49
  これを使って"斜めのチェック"をやってます。
50
+
51
+
52
+
53
+ [追記] コメントつけてみた
54
+
55
+ ```Python
56
+
57
+ N = 8
58
+
59
+
60
+
61
+ # 斜めのチェック
62
+
63
+ def check(x, col):
64
+
65
+ for i, row in enumerate(reversed(col)): #ここがわかりません
66
+
67
+ if (x + i + 1 == row) or (x - i - 1 == row):
68
+
69
+ return False #配置不可
70
+
71
+ return True
72
+
73
+
74
+
75
+ # 8-queenのルールを満足するcolを生成する
76
+
77
+ def search(col):
78
+
79
+ if len(col) == N: # colの要素数がN個に達したら
80
+
81
+ print(col) # プリントして
82
+
83
+ return # 終了
84
+
85
+
86
+
87
+ for i in range(N): # i = 0, 1, ... N-1 に対し
88
+
89
+ if i not in col: # col中にiが含まれないときに限り
90
+
91
+ if check(i, col): # そのiをcolに追加しても8-queen のルールに反しないなら
92
+
93
+ col.append(i) # colの末尾に追加し
94
+
95
+ search(col) # 検索を続け
96
+
97
+ col.pop() # colの末尾から取り除く(次のiを試みる)
98
+
99
+
100
+
101
+ search([])
102
+
103
+ ```