Задача о восьми ферзях — широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: "Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого". Подразумевается, что ферзь бьёт все клетки, расположенные по вертикалям, горизонталям и обеим диагоналям.
из материалов Википедии:
Задачу можно обобщить следующим образом: "На шахматной доске со стороной N, расставить N ферзей так, чтобы ни один из них не находился под боем другого".
src/isSafeQueens.php
Реализуйте функцию isSafeQueens()
, которая принимает комбинацию ферзей в виде списка и проверяет, является ли данная расстановка решением задачи.
Комбинации формируются следующим образом:
(2, 4, 1, 3)
Где каждое число — это позиция ферзя по вертикали, а порядок числа в списке — позиция ферзя по горизонтали.
Для примера выше, доска будет выглядеть так:
1 2 3 4
___ ___ ___ ___
1 |___|___|_*_|___|
2 |_*_|___|___|___|
3 |___|___|___|_*_|
4 |___|_*_|___|___|
Примеры
<?php
use function Php\Pairs\Data\Lists\l;
$queens = l(2, 4, 1, 3);
isSafeQueens($queens); // true
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.