Нехай шахівниця 8х8 представлена будь-якими двома різними значеннями, причому одне значення - порожній квадрат, а інше - королева. У наступних прикладах я використовую 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
Розглянемо кількість пар королеви, які атакують кожну, що знаходяться як мінімум на один квадрат (як нагадування, королеви атакують ортогонально та діагонально). У наведеному вище прикладі наступна неймовірна негарна діаграма показує всі ці пари як стрілки.
Вище знайдено 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
Виклик
Напишіть програму, яка з урахуванням стану плати, представленого двома різними значеннями, виводить кількість пар королеви, які атакують одна одну, принаймні один квадрат між ними.
- Ви можете вводити в будь-якому зручному форматі, який використовує два значення для представлення порожніх квадратів і маток, наприклад, рядок 64 "". матриця булевих списків, список списку цілих чисел 0 і 1 тощо, якщо це пояснено у вашому рішенні
- Вихід - ціле число
- Застосовуються стандартні методи вводу / виводу, а стандартні лазівки заборонені
- Це кодовий гольф, тому найкоротша відповідь у байтах виграє
Тестові приклади:
Використовуючи формат 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