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