До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Дневник студента

Грёбаные два нуля ... или мне надо выговориться

Время чтения статьи ~2 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Грёбаные два нуля ... или мне надо выговориться главное изображение

Данная Запись перекочевала из обсуждения задачи "Без двух нулей" доп испытаний "Введения в программирование"

собсно сама задача

>Реализуйте и экспортируйте по умолчанию функцию, которая принимает на вход два аргумента - количество нулей и количество единиц, и определяет сколько есть способов размещения этих нулей и единиц так, что бы не было двух нулей идущих подряд. > >Например, определим все способы размещения двух нулей и двух единиц. Существует шесть возможных способов размещения: 0011, 0101, 0110, 1001, 1010, 1100. В трех случаях содержится два нуля, идущих подряд: 0011, 1001 и 1100. Вычитаем их из общего числа и получаем три возможных способа: 0101, 0110 и 1010. Ответ - 3.

Шли третьи сутки ...

Легкий lo-fi сменили жесткие треки The Prodigy, банка кофе заканчивалась, пепельница напоминала супер саяна из японских мультиков, пол был завален записями с нулями и единицами, квартира походила на палату сумасшедшего .....

enter image description here

Комбинаторика поддавалась крайне туго, из обсуждений не было понятно ровным счетом ничего. Несколько обсуждающих указывали на треугольник Паскаля, про который я узнал в первый день изучения комбинаторики. Смотрел на него, как баран на новые ворота, с единственной мыслью "И чё???". Конечно, было понятно сразу, что это просто наглядный способ посчитать количество перестановок, но это я мог и без треугольника, функция факториала была написана за первые пять минут. Другое дело, что это никак не подходило под два нуля.

После ознакомления со статьёй Павла Кима (спасибо ему за проделанную работу), "И ЧЁ!!?" не покидала меня никак, треугольник тот же, подобранные ответы казались мне случайным совпадением, и я продолжал искать общую формулу. Сегодня, проснувшись, ко мне пришло озарение, и хотя из-за плохого абстрактного мышления я всё еще считаю, что моя рабочая формула просто подгонка под результаты, она работает.

Решение учителя я понял сразу, так как после того, как нашел общий принцип решения, подумывал посчитать именно так, но на первый взгляд было не понятно, какой способ лучше - просчитать значения в треугольнике или взять общую формулу перестановок. При вычислении треугольника рекурсия грозила переполнить стек при неверной настройке и более высоких значениях нулей и единиц, а в общей формуле были высокие значения факториалов. К моему решению склонила лень - функция факториала была уже написана, и оставалось дописать всего одну строчку с формулой.

Пы. Сы. После всего этого осталось чувство какой-то не завершенности, так как до конца не разобрался в комбинаторике, и как уже говорил - просто подогнал формулу под набор ответов. Наверное именно так чувствуют себя ученые первооткрыватели законов, когда есть просто набор значений и надо их привести к общему закону.

пойду забудусь сном ...

Аватар пользователя Макс Лантинов
Макс Лантинов 31 мая 2019
7
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября