Перед вами популярная игра "Морской бой".
solution.js
Реализуйте и экспортируйте функцию calcShipsCount()
, которая принимает на вход поле боя в виде квадратного двумерного массива из нулей и единиц. Ноль — пустая ячейка, единица — часть корабля. Функция должна вернуть количество кораблей на поле боя.
Так как корабли не должны соприкасаться друг с другом, реализуйте и экспортируйте функцию isValidField()
, которая проверяет расстановку кораблей на корректность.
calcShipsCount([]); // 0
calcShipsCount([
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 1, 1, 1],
[0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 0, 1],
[0, 0, 0, 0, 0, 1],
[1, 1, 0, 1, 0, 0],
]); // 6
isValidField([
[0, 1, 0, 0],
[1, 0, 0, 1],
[0, 0, 0, 0],
[0, 1, 1, 1],
]); // false
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Отзывы

Хочется стереть себе память и больше никогда не проходить подобные задания. Пойду отдохну Порешаю хард задачи на лииткоде

Поскольку это было моё последнее испытание по массивам, решил немного усложнить себе задачу и написал функцию, которая по умолчанию выводит количество кораблей на поле. А при указании количества палуб(второй необязательный параметр) выводит количество кораблей с таким числом палуб. https://ru.hexlet.io/code_reviews/892669?submission_id=1152725 Вроде как, всё работает. А значит, и время на изучение JS массивов было потрачено не зря. Спасибо за интересные задачи!

Добрый день. Отличное испытание! Как оказалось, про существование преобразования типов я забыл :\ Как забыл и про левую ассоциативность условной конструкции...в общем круто! Именно так знания и закрепляются, спасибо!