https://sun9-54.userapi.com/s/v1/ig2/jNrmkKoluITEZ4ypIn0sXIMyNpcvtzBbNs1BzzSI3ZqNBIA94_l0Ewy-dxvWQm_1ysbiCH5UiTuF2deYt-2L4HA-.jpg?quality=95&crop=0,0,640,640&as=32x32,48x48,72x72,108x108,160x160,240x240,360x360,480x480,540x540,640x640&from=bu&cs=640x0✏️
https://vk.com/wall-184870282_26444: Python и задание №23!
На сегодня в сборниках наиболее популярные два прототипа:
- сколько существует вычислительных траекторий из a в b,
- сколько чисел могут являться результатом вычислительной стратегии длиной d, начинающихся в a.
🍭КОЛИЧЕСТВО СТРАТЕГИЙ ИЗ А В В
Функция принимает два значения - текущее a, из которого совершается следующая команда, и итоговое b, в которое нужно прийти по тексту задания.
Если из a невозможно попасть в b, либо действие совершается из значения, которое не должно входить в стратегию, возвращается 0. То есть не существует вычислительных стратегий из a в b.
Контроль движения через значения делается посредством вызовов функций, которые последовательно будут выяснять количество стратегий до значений.
Например, если нужно найти количество стратегий из 10 в 100, проходящих через 30 и 50, то используется запись f(10, 30)*f(30, 50)*f(50, 100).
В данный шаблон можно вносить различные изменения, которые обычно реализуются добавлением доп.аргумента у функции и соответствующих логических конструкций в коде.
🍭ВСЕ ЧИСЛА ДЛЯ СТРАТЕГИЙ ДЛИНОЙ N
Так как мы ищем количество итоговых значений, параметр b у функции отсутствует.
Работу с длиной стратеги можно делать и увеличивая значение N от 0 значения. На мой личный взгляд шаблон с уменьшением более гибок.
Как только количество шагов до искомого значения становится равным нулю, возвращается множество из одного элемента. Если текущее значение входит в список значений, через которые стратегия не должна проходить, возвращается пустое множество.
🎓ВАЖНО: множества не поддерживают операцию +, объединение множеств происходит с помощью оператора |.