HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Описание решения в "лоб" задачи "Без двух нулей" курса "Введение в программирование".</p>
1 <p>Описание решения в "лоб" задачи "Без двух нулей" курса "Введение в программирование".</p>
2 <h2>Содержание</h2>
2 <h2>Содержание</h2>
3 <ul><li><a>Задание:</a></li>
3 <ul><li><a>Задание:</a></li>
4 <li><a>Постановка проблемы:</a></li>
4 <li><a>Постановка проблемы:</a></li>
5 <li><a>Решение:</a></li>
5 <li><a>Решение:</a></li>
6 <li><a>Примечание:</a></li>
6 <li><a>Примечание:</a></li>
7 <li><a>Код:</a></li>
7 <li><a>Код:</a></li>
8 </ul><h2>Задание:</h2>
8 </ul><h2>Задание:</h2>
9 <p>Реализуйте и экспортируйте по умолчанию функцию, которая принимает на вход два аргумента - количество нулей и количество единиц, и определяет сколько есть способов размещения этих нулей и единиц так, что бы не было двух нулей идущих подряд.</p>
9 <p>Реализуйте и экспортируйте по умолчанию функцию, которая принимает на вход два аргумента - количество нулей и количество единиц, и определяет сколько есть способов размещения этих нулей и единиц так, что бы не было двух нулей идущих подряд.</p>
10 <p>Например, определим все способы размещения двух нулей и двух единиц. Существует шесть возможных способов размещения:</p>
10 <p>Например, определим все способы размещения двух нулей и двух единиц. Существует шесть возможных способов размещения:</p>
11 <p>0011, 0101, 0110, 1001, 1010, 1100. В трех случаях содержится два нуля, идущих подряд: 0011, 1001 и 1100.</p>
11 <p>0011, 0101, 0110, 1001, 1010, 1100. В трех случаях содержится два нуля, идущих подряд: 0011, 1001 и 1100.</p>
12 <p>Вычитаем их из общего числа и получаем три возможных способа: 0101, 0110 и 1010. Ответ - 3.</p>
12 <p>Вычитаем их из общего числа и получаем три возможных способа: 0101, 0110 и 1010. Ответ - 3.</p>
13 <h2>Постановка проблемы:</h2>
13 <h2>Постановка проблемы:</h2>
14 <p>Перед решением задания неприятно удивило, что процент решивших на данный момент всего 55%, для остальных заданий 90-95. Подумалось, что я что то упустил при чтении условия, может есть какой то хитрый подвох, полез читать комментарии, чего только там не было, рекурсия, деревья, комбинаторика, геометрия. В общем, по себе знаю, хочешь сделать надежно, и чтобы и через год понять свое собственное решение - делай как можно проще и прямолинейней - т.е. не плоди лишних сущностей, в данном случае хватит и простого перебора, компьютер быстрый, он справиться.</p>
14 <p>Перед решением задания неприятно удивило, что процент решивших на данный момент всего 55%, для остальных заданий 90-95. Подумалось, что я что то упустил при чтении условия, может есть какой то хитрый подвох, полез читать комментарии, чего только там не было, рекурсия, деревья, комбинаторика, геометрия. В общем, по себе знаю, хочешь сделать надежно, и чтобы и через год понять свое собственное решение - делай как можно проще и прямолинейней - т.е. не плоди лишних сущностей, в данном случае хватит и простого перебора, компьютер быстрый, он справиться.</p>
15 <h2>Решение:</h2>
15 <h2>Решение:</h2>
16 <p>Идея решения проста, по сути нам на вход подается множество двоичных чисел с заданным числом нулей и единиц, переберем их все, от 0 до a + b (с ведущими нулями, в этом нам очень сильно поможет метод<em>String.padStart</em>), где a - количество нулей, b - количество единиц, в процессе перебора будем отбрасывать числа содержащие парные нули (<em>.includes('00')</em>) и числа с количеством нулей и единиц в записи, отличающимся от количества нулей и единиц, заданных параметрами функции. Если запись числа с ведущими нулями не содержит парных нулей, и содержит заданное число нулей и единиц - увеличиваем счетчик на единицу, закончили перебор - вернули значение счетчика. Задание решено.</p>
16 <p>Идея решения проста, по сути нам на вход подается множество двоичных чисел с заданным числом нулей и единиц, переберем их все, от 0 до a + b (с ведущими нулями, в этом нам очень сильно поможет метод<em>String.padStart</em>), где a - количество нулей, b - количество единиц, в процессе перебора будем отбрасывать числа содержащие парные нули (<em>.includes('00')</em>) и числа с количеством нулей и единиц в записи, отличающимся от количества нулей и единиц, заданных параметрами функции. Если запись числа с ведущими нулями не содержит парных нулей, и содержит заданное число нулей и единиц - увеличиваем счетчик на единицу, закончили перебор - вернули значение счетчика. Задание решено.</p>
17 <h2>Примечание:</h2>
17 <h2>Примечание:</h2>
18 <p>В переборе всех чисел от 0 до a + b нам не обойтись без метода<em>Number.toString(n)</em>- возвращает число в системе исчисления по основанию n.</p>
18 <p>В переборе всех чисел от 0 до a + b нам не обойтись без метода<em>Number.toString(n)</em>- возвращает число в системе исчисления по основанию n.</p>
19 <h2>Код:</h2>
19 <h2>Код:</h2>
20  
20