Javascript: Задача про ферзей

JS: Последовательности 71 сообщение
Обновлено: 04 мая, 12:36
804
Студента
65%
Завершения

Задача о восьми ферзях — широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: "Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого". Подразумевается, что ферзь бьёт все клетки, расположенные по вертикалям, горизонталям и обеим диагоналям.

// из материалов Википедии

Задачу можно обобщить следующим образом: "На шахматной доске со стороной N, расставить N ферзей так, чтобы ни один из них не находился под боем другого".

isSafeQueens.js

Реализуйте и экспортируйте по умолчанию функцию, которая принимает комбинацию ферзей в виде списка и проверяет, является ли данная расстановка решением задачи.

Комбинации формируются следующим образом:

(2, 4, 1, 3)

где каждое число — это позиция ферзя по вертикали, а порядок числа в списке — позиция ферзя по горизонтали.

Для примера выше, доска будет выглядеть так:

     1   2   3   4
    ___ ___ ___ ___
1  |___|___|_*_|___|
2  |_*_|___|___|___|
3  |___|___|___|_*_|
4  |___|_*_|___|___|

Примеры:

import isSafeQueens from '../isSafeQueens.js';

const queens = l(2, 4, 1, 3);

isSafeQueens(queens); // true

Для полного доступа к испытанию нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Впечатления

Аватар пользователя Natalia A.
Natalia A. 02 ноября 2018

Спасибо, что подбираете такие крутые испытания.

Удалось поэксперементировать, испытать разные способы, в том числе передчу во второй параметр reduce двух счетчиков (с помощью пары). В очередной раз удивляешься насколько мощная функция)


Аватар пользователя Saloev Sa'di
Saloev Sa'di 14 октября 2018

Только что решил задание и посмотрел решение учителя, по ходу во время решения задачи меня занесло куда-то очень очень далеко. А на задачу я потратил 2 дня :[ но задача была очень интересной хотелось бы побольше таких задач.


Аватар пользователя Alexandr Sokolov
Alexandr Sokolov 22 апреля 2017

как хитрецки используется аккумулятор в образце, прям читерство, возьмем на вооружение =)