У мене лічильник. Це невеликий пристрій, який виглядає приблизно так:
Дисплей переходить від 0000до 9999. У верхній частині є невелика кнопка, що збільшує кількість рахунків на 1, і невелика кнопка праворуч, мета якої - скинути лічильник на 0.
Тепер річ у маленькій ручці полягає в тому, що якщо повернути її назад, ви можете змусити її збільшувати будь-яку цифру, яку ви хочете, як тільки ви знову повернете її вперед. Тож якщо я натискаю кнопку лічильника 10 разів, щоб лічильник показав0010 , я можу повернути ручку назад, поки не почую крихітний клацання, а потім повернути її вперед і змусити перейти прямо до неї 0090.
Але, ручка завжди збільшуватиме всі випадки однієї цифри на 1 кожен раз, коли вона натискає цифри вперед. Так що, якщо лічильник показує 6060, ви можете тільки зробити це , щоб збільшити 7070, а НЕ 6070або 7060. Крім того, ручка перекинеться 9на 0без перенесення, тому 0990перейде до 0000замість 1000або 1100.
Хочу знати найефективніший спосіб встановити лічильник на певну кількість. Ваше завдання - написати програму або функцію, яка визначатиме найкоротшу послідовність натискання кнопок і пересування кнопок, необхідних для цього.
Ваша програма прийме як введення 4-значний номер від 0000до 9999та поверне ряд кроків у наступному форматі:
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
Якщо Cозначає "натиснути кнопку лічильника" і будь-яка цифра Dвід 0 до 9 означає ", використовуйте регулятор, щоб пересувати всі події Dна 1".
Ваша програма повинна створити дійсну послідовність кроків для всіх можливих чотиризначних комбінацій, і вона буде набрана загальною кількістю кроків, необхідних для всіх 10000 випадків. У випадку зв'язання (швидше за все, коли знайдеться оптимальний алгоритм), коротший код виграє.

0010в0020в цьому випадку? Або ви можете лише повернути ручку назад? А також, чи вважає кожен "D" числом "D" кількість просування ручки (наприклад, чи1234567означає повернути ручку 1 раз, потім 2 рази, потім 3 рази і так далі)? Або це просто означає кожен поворот ручки (наприклад, це1234567означає просто повернути ручку 7 разів)?