Многие языки программирования создают большие целые числа путем «конкатенации» цифры к концу существующего числа. Например, Лабиринт или Адаптировать . Конкатенируя цифру до конца, я имею в виду, что если существующее число равно , а число равно , результирующее число равно .
Составное число - это число, которое можно построить таким образом, используя кратные числа из однозначных чисел: AKA элемент в одной из этих 9 последовательностей:
Чтобы дать пример того, как строятся последовательности, вот как последовательность для a = 3 :
и включены, чтобы продемонстрировать, когда . Много цифр пунктир за пространство.
Возможно, до сих пор неясно, как сконструированы эти последовательности, поэтому есть два разных способа их понять:
Каждая последовательность начинается с одной цифры. Следующий термин определяется путем взятия следующего кратного этой цифры, умножения предыдущего термина на и добавления кратного. В последовательном выражении:
где - это одна цифра (от до )
Каждый из элементов в любой точке последовательности (например, ) кратен от до , где составляется из
Таким образом, первые значения , вторые , третьи и т. д.
Ваша задача - взять построенное число в качестве ввода и вывести начальную цифру, использованную для его построения. Вы можете предположить, что вход всегда будет составным числом и будет больше . Это может быть одна цифра, которая отображается на себя.
Вы можете принимать ввод любым разумным способом, в том числе в виде списка цифр, в виде строки и т. Д. Допустимо (хотя и не рекомендуется) вводить данные в унарной или любой другой базе по вашему выбору.
Это код-гольф, поэтому выигрывает самый короткий код!
Контрольные примеры
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
или в виде двух списков:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
Когда я опубликовал это задание, я не осознавал, что его можно так сильно упростить с помощью метода, использованного в ответе Грими , и поэтому очень заинтересован в ответах, которые используют более математический подход к решению, а не «цифру». хитрость (очевидно, все действительные ответы одинаково действительны, именно то, что мне было бы интересно увидеть).
Ответы:
05AB1E ,
754 байтаПопробуйте онлайн!
источник
a * (((10**n - 1) / 9 - n) / 9)
. Умножьте это на 9 и добавьтеa*n
, и вы получитеa * ((10**n - 1) / 9)
aka цифру, повторенную n раз. Оказывается, добавление 9 вместоa*n
работ для n = 1, а для больших n постоянная разница незначительна рядом с экспоненциальным ростом.MathGolf , 6 байтов
Попробуйте онлайн!
К сожалению,
head
в MathGolf нет никаких операций, поэтому мне нужно обойтись,▒├Þ
чтобы преобразовать в строку, щелкнуть слева и отбросить все, кроме вершины стека.источник
Желе , 5 байт
Попробуйте онлайн!
Используя подход Грими .
источник
Stax , 5 байт
Запустите и отладьте его
источник
Japt
-g
,765 байт-1 байт благодаря Shaggy
Принимает ввод в виде строки
Попробуй это | Проверьте несколько входов
источник
Древесный уголь , 7 байт
Попробуйте онлайн! Ссылка на подробную версию кода. @ Конечно, метод Грими. Вот 27-байтовый математический подход:
Попробуйте онлайн! Ссылка на подробную версию кода. Сбои на неверных входах. Объяснение:
Введите построенное число.
Интерпретируйте список как число в базе 10, умножьте его на все числа от
0
до9
и посмотрите, появляется ли построенное число.Выдвиньте список длины к себе. Таким образом, список становится в форме
[0, 1, 2, ..., n]
.Создайте заново построенные числа, но на этот раз найдите и выведите индекс, по которому появилось введенное число.
источник
Лабиринт ,
28 2220 байтПрименяет основанный на цифрах метод, описанный Грими путем повторного целочисленного деления на десять, пока не будет найден ноль.
Попробуйте онлайн!
источник
Пробел , 108 байт
Буквы
S
(пробел),T
(табуляция) иN
(новая строка) добавляются только как подсветка.[..._some_action]
добавлено только в качестве объяснения.Порт ответа @Grimy 's 05AB1E , за исключением того, что у меня нет встроенной функции для получения первой цифры. ;)
Попробуйте онлайн (только с пробелами, вкладками и новыми строками).
Объяснение в псевдокоде:
источник
Python 3 , 22 байта
Попробуйте онлайн!
Порт грязного «s 05AB1E ответа
Python 3 , 74 байта
Попробуйте онлайн!
объяснение
Рекурсивная функция. Перебирает последовательность для каждой цифры
l
, начиная с1
. Если входное значениеi
равно текущей итерацииj
,l
возвращается соответствующая цифра . Иначе, если текущее значениеj
в последовательности превышает входное значениеi
, оно будет увеличивать цифруl
и начинать заново. Аргументk
используется для увеличения коэффициента умножения.источник
JavaScript (ES6),
1615 байтСпасибо @Grimy за снятие 32-битного ограничения, которое у меня было с предыдущей версией.
Используя магическое заклинание Грими . Принимает ввод в виде строки.
Попробуйте онлайн!
JavaScript (ES6), 53 байта
Наивный подход грубой силы.
Попробуйте онлайн!
источник
-~n*9
может бытьn*9+9
, это то же самое bytecount, но следует избавиться от 32-битного ограничения, если я правильно понял.14808
n=>n
работает для всех входов.Java 8, 23 байта
Port of @Grimy 's 05AB1E answer , так что обязательно проголосуйте за него!
Попробуйте онлайн.
Но из-за того , что я немного расстроен из- за @cairdCoinheringaahing , здесь грубый метод с немного большим количеством денег ( 83 байта ):
Попробуйте онлайн.
Объяснение:
источник
PHP , 20 байт
Попробуйте онлайн!
Еще один порт ответа Грими !
источник
Желе , 8 байт
Попробуйте онлайн!
Полная программа, которая принимает целое число и печатает начальную цифру. Не использует умный метод Грими! Ужасно неэффективно для большего ввода. Следующая версия обрабатывает все тестовые случаи, но на байт длиннее:
Желе , 9 байт
Попробуйте онлайн!
источник
Hy , 44 байта
Использует метод Грими
Попробуйте онлайн!
источник
Бочонок
-rr
, 4 байтаПопробуйте онлайн!
Конечно, используется тот же подход, что и в ответе 05AB1E. Также используется новый
-rr
флаг (обратный и печатный).Транспортирует к:
источник
Рен , 30 байт
Просто порт большинства ответов.
Попробуйте онлайн!
источник