Ваша задача - взять положительное число в качестве входных данных n и вывести длину самого длинного представления повторяющихся цифр n в любой базе. Например, 7 может быть представлен как любой из следующих
111_2
21_3
13_4
12_5
11_6
10_7
7_8
Повторные цифры: 111_2
и 11_6
, 111_2
длиннее, поэтому наш ответ - 3.
Это вопрос по коду-гольфу, поэтому ответы будут оцениваться в байтах, при этом меньшее количество байтов будет лучше.
Тестовые случаи
1 -> 1
2 -> 1
3 -> 2
4 -> 2
5 -> 2
6 -> 2
7 -> 3
8 -> 2
9 -> 2
10 -> 2
11 -> 2
26 -> 3
63 -> 6
1023-> 10
Пример реализации
Вот реализация в Haskell, которую можно использовать для генерации большего количества тестовых случаев.
f 0 y=[]
f x y=f(div x y)y++[mod x y]
s x=all(==x!!0)x
g x=maximum$map(length.f x)$filter(s.f x)[2..x+1]
code-golf
base-conversion
Пост Рок Гарф Хантер
источник
источник
base > 1
?222
в базе 3.Ответы:
Желе , 9 байт
Монадическая ссылка, принимающая и возвращающая номера
Попробуйте онлайн! или посмотрите набор тестов (ввод от 1 до 32 включительно).
Как?
... или, может быть, я должен был сделать:
Для
Lo1
Я.источник
ZL
он корочеL€Ṁ
...JavaScript (ES6), 62 байта
источник
Haskell ,
868179 байтов2 байта сохранены благодаря Laikoni
Попробуйте онлайн!
Так как это немного утихло, вот мой подход. Это пример кода, который я сделал для вопроса. Я думаю, что это определенно может быть короче. Я просто думал, что выложу это там.
источник
length.head.filter(all=<<(==).head).(<$>[2..]).(!)
.Шелуха ,
1311 байт-2 байта благодаря zgarb
Попробуйте онлайн!
источник
mm
может бытьM
иṠoΛ=←
может бытьȯ¬tu
. Там еще нет встроенной проверки того, что все элементы списка равны ...ΓoΛ=
также работает как четыре байтаM
должно быть в документах, так как у нас это было некоторое время. Я должен это исправить. Но это в основном двойственностьṀ
.Mathematica, 71 байт
Попробуйте онлайн!
источник
05AB1E , 8 байтов
Попробуйте онлайн!
-1 спасибо kalsowerus .
источник
L>вʒË}нg
для 8 байтовБрахилог , 12 байт
Попробуйте онлайн!
источник
Python 3 ,
9287 байт5 байтов благодаря Халварду Хаммелю.
Попробуйте онлайн!
источник
Mathematica, 58 байт
Выдает ошибку (потому что base-1 не является действительной базой), но ее можно игнорировать.
Конечно, можно взять длину первого repdigit (
FirstCase
), поскольку числа в нижних основаниях не могут быть короче, чем в более высоких.источник
CJam (17 байт)
Набор онлайн-тестов . Это анонимный блок (функция), который принимает целое число в стеке и оставляет целое число в стеке.
Работает с грубой силой, используя
3
в качестве запасной базы для обработки особых случаев (ввод1
или2
).источник
Perl 6 , 49 байт
Попробуйте онлайн!
объяснение
Метод polymod является обобщением Python
divmod
: он выполняет повторное целочисленное деление, используя заданный список делителей, и возвращает промежуточные остатки.Его можно использовать для разложения количества на несколько единиц:
При передаче ленивой последовательности в качестве списка делителей
polymod
останавливается, когда частное достигает нуля. Таким образом, давая ему бесконечное повторение одного и того же числа, разбивает входные данные на цифры этой базы:Я использую это здесь, потому что это позволяет произвольно высокие основания, в отличие от
.base
метода на основе строк, который поддерживает только до основания 36.источник
[]
вокругpolymod
, изменив$_
на@_
TI-BASIC, 37 байтов
Запрашивает N, возвращает вывод в Ans.
объяснение
В качестве обзора, для каждого возможного основания B в последовательности сначала вычисляется количество цифр N, когда оно представлено в основании B, а затем проверяется, делится ли N на значение, представленное тем же количеством 1-цифр в основании B.
источник
Pyth , 13 байт
Попробуйте онлайн!
источник
Java 8, 111 байт
Счетчик байтов 111 также является повторяющейся цифрой. ;)
Объяснение:
Попробуй это здесь.
источник
Java 8, 79 байт
Лямбда из
Integer
вInteger
.Неуправляемая лямбда
Проверяет радиусы в порядке возрастания от 2 до тех пор, пока не будет найден радиус повторения. Полагается на тот факт, что наименьшее такое основание будет соответствовать представлению с наибольшим количеством цифр.
m
является копией входных данных,b
является основанием иl
количеством проверенных цифр (и, в конечном счете, длиной представления радиусаb
).источник
Бурлеск, 24 байта
(см. правильное решение ниже)
Смотрите в действии .
По крайней мере, если моя интуиция права, что представление повторяющихся цифр всегда будет самым длинным? Иначе хм ...
источник