Дано любое целое число x> 0 и любое основание y> 3.
- Суммируйте все цифры x (если они записаны в заданной базе).
- Умножьте это на максимально возможную цифру (всегда
base -1
). - Повторяйте, пока это значение
(y - 1) ^ 2
Обыскивается количество итераций и шагов.
Пример 1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
Пример 2:
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
Особенность:
в некоторых случаях (в некоторых комбинациях с основанием 3) вы не сможете получить (y - 1) ^ 2
лайк для x = 53
и y = 3
. По этой причине y
должно быть больше 3, и вы можете игнорировать это.
Количество итераций должно быть первым или последним значением
Это код-гольф с наименьшим количеством байтов.
code-golf
combinatorics
base-conversion
Дирк Рейхель
источник
источник
Ответы:
Желе ,
1413 байт-1 байт, печатая по мере зацикливания (
Ṅ
замена разделения цепочкиµ
и объединения;
)TryItOnline!
Как?
Альтернативный 13-байтовый выводит каждый вход в цикл плюс перевод строки (
Ṅ
) и, наконец, неявно печатает уменьшенный счетчик собранных результатов, устраняя необходимость в монадическом разделении цепочек (µ
) и конкатенации (;
).источник
Perl 6 , 60 байт
Expanded:
Использование:
источник
C
116113 байтов-3 байта для пересчета квадрата каждый раз
Ungolfed и использование:
источник
JavaScript (ES6),
97918482 байтаКонтрольные примеры
Показать фрагмент кода
источник
Желе , 16 байт
Я думаю, что я все равно опубликую это, хотя он и был побит, когда я его писал, потому что это заметно другой алгоритм, и было интересно писать. (Я не мог понять, как
ÐĿ
проанализировал документы и пришлось отказаться от него, хотя знал, что это, вероятно, приведет к более короткому решению, чем это.)Попробуйте онлайн!
Объяснение:
Использование в
<’¥
основном короткого способа написания диады (ссылка с двумя аргументами), которая всегда возвращает -1 (потому что мы знаем, что ответ никогда не будет меньше базового). Выбор между рекурсивным запуском и всей рекурсивной программой позволяет нам определить, когда прекратить цикл. Затем, когда стек раскручивается в конце рекурсии, мы продолжаем увеличивать -1, чтобы определить, сколько шагов было.источник
MATL,
2521 байт4 байта сохранены благодаря @Luis
Попробуйте онлайн!
объяснение
источник
Mathematica, 80 байт
это символ частного использования,U+F4A1
используемый для представления\[Function]
. Если в ответе не требовалось количество шагов, это можно сделать за 60 байтов:источник