8x8のチェス盤を2つの異なる値で表し、1つの値を空の正方形、もう1つの値をクイーンとします。次の例では、空の四角形として0を使用し、クイーンとして1を使用します。例えば:
によって与えられます
1 0 1 1 1 0 0 0
1 0 1 0 1 0 1 1
1 0 1 0 1 1 0 1
0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 1 1
0 1 1 1 0 1 0 1
少なくとも1スクエア離れたそれぞれを攻撃しているクイーンのペアの数を考慮します(リマインダーとして、クイーンは直交して斜めに攻撃します)。上記の例では、次の信じられないい図がこれらすべてのペアを矢印として示しています。
上記の43のペアがあり、次のテストケースを示します。
Input:
1 0 1 1 1 0 0 0
1 0 1 0 1 0 1 1
1 0 1 0 1 1 0 1
0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 1 1
0 1 1 1 0 1 0 1
Output: 43
チャレンジ
2つの異なる値で表されるボードの状態が与えられると、少なくとも1つの正方形を挟んで互いに攻撃するクイーンのペアの数を出力するプログラムを作成します。
- 空の四角とクイーンを表すのに2つの値を使用する最も便利な形式で入力できます。たとえば、空の四角には64「。」の文字列、下から上に行ごとのクイーンには「Q」の文字列、8x8ソリューションで説明されている限り、ブール値のマトリックス、整数0および1などのリストのリスト
- 出力は整数です
- 標準I / O方法が適用され、標準の抜け穴は禁止されています
- これはコードゴルフなので、バイト単位の最短回答が勝ちます
テストケース:
0と1の形式を使用します。0は空の正方形で、1はクイーンです。
Input:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Output: 0
Input:
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 0
Input:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Output: 1
Input:
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0
0 0 0 0 1 0 1 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 1 0
0 0 0 0 0 0 0 0
Output: 10
Input:
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 4
Input:
1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 11