JavaScript: Без двух нулей
solution.js
Реализуйте и экспортируйте по умолчанию функцию, которая принимает на вход два аргумента - количество нулей и количество единиц, и определяет сколько есть способов размещения этих нулей и единиц так, чтобы не было двух нулей идущих подряд.
Например, определим все способы размещения двух нулей и двух единиц.
Существует шесть возможных способов размещения: 0011
, 0101
, 0110
, 1001
, 1010
, 1100
.
В трех случаях содержится два нуля, идущих подряд: 0011
, 1001
и 1100
.
Вычитаем их из общего числа и получаем три возможных способа: 0101
, 0110
и 1010
. Ответ - 3
.
Примеры использования:
import withoutTwoZeros from './solution';
withoutTwoZeros(2, 2); // 3
withoutTwoZeros(1, 1); // 2
withoutTwoZeros(1, 3); // 4
withoutTwoZeros(2, 4); // 10
// Если в наборе одни нули, нет ни одного способа
withoutTwoZeros(3, 0); // 0
// Если в наборе только единицы, то есть только один способ
withoutTwoZeros(0, 3); // 1
Построить набор, в котором ноль нулей и ноль единиц, невозможно. Поэтому считаем, что ноль нулей и ноль единиц одновременно не могут быть переданы в функцию
Подсказки
- https://ru.wikipedia.org/wiki/Сочетание
- разбор тождества комбинаторики https://youtu.be/F_0DwN--bTM?t=3109
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Отзывы

Не занимался несколько месяцев, решил повторить курс. Тогда решал задачу целый день, и получилось достаточно коряво. Сегодня открыл, поначалу испугался, думал, провожусь долго, но нет, справился за час, и сразу написал без изменяемых состояний. Хорошо Хекслет рекурсии вбил в голову!)

Теперь у меня есть печальный опыт (на 35 строк) приступания к заданию до того, как придумаешь оптимальный алгоритм. Лучшая практика на Хекслете, очень поучительно, спасибо :) PS: ребята, не сдавайтесь, пусть даже так круто как у учителя не выйдет, продолжайте. Превозмогая трудности!

Сразу же начал решать через формулы комбинаторики, что затянуло выполнение. Наверное можно было бы решить "костыльными" методами быстрее, но стало интересно освежить знания и потренироваться. Задача интересная! Спасибо что вернули! :)

Хорошая, задачка. Ломал голову целый день, но в итоге вывел формулу для получения количества перестановок с 00. Как? Экспериментально, Ватсон! После этого все решилось, причем за 0.3сек )) Решение учителя пока не понял, но красивое.