Возьмите положительное целое число качестве входных данных. Начните с и многократно увеличивайте на наибольшую целую степень из десяти , чтобы и .
Повторяйте до и возвращайте список всех промежуточных значений , включая как начальную и конечную .
Во время этого процесса рост будет первоначально ограничен первым неравенством, а только потом последним; рост примет форму начального периода «расширения», в течение которого увеличивается на все большие степени, после чего следует период «контракта», в течение которого увеличивается на все меньшие степени для «увеличения» на правильный номер.
Тестовые случаи
1 => [1]
10 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
321 => [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 20, 30, 40, 50, 60, 70, 80, 90,
100, 200, 300, 310, 320, 321]
1002 => [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 20, 30, 40, 50, 60, 70, 80, 90,
100, 200, 300, 400, 500, 600, 700, 800, 900,
1000, 1001, 1002]
Это код-гольф , поэтому выигрывает самый короткий ответ (в байтах).
Ответы:
Haskell ,
72686463 байтаПопробуйте онлайн!
Спасибо Sriotchilism O'Zaic за -4 байта!
использование
объяснение
источник
(^)
приоритет выше, чем в(+)
скобках вокруг(^)
выражения. То же самое касается(!)
и(:)
pred.length.show.min c$t-c
можно сократить доlength(show.min c$t-c)-1
. Анонимные функции приемлемы, поэтому вы можете отказаться от лидирующих,f=
как описано в нашем руководстве по правилам игры в гольф на Хаскеле .c!t=c: if t>c then (c+10^(length(show.min c$t-c)-1))!t else []
. Это позволяет применить этот совет, чтобы сохранить еще несколько байтов: попробуйте онлайн!JavaScript (ES6), 50 байт
Попробуйте онлайн!
Как?
теория
Следующие шаги повторяются доn = 0 :
Реализация
ЗначениеИкс напрямую вычисляется как строка со следующим выражением:
'10'
'10'
источник
k
что - то совершенно иное , чем в описании вызова (на самом деле вашn
является сочетанием параметров порядкаn
иk
и вашиx
ихi
.)Python 2 , 61 байт
Попробуйте онлайн!
источник
Perl 6 ,
4841 байтПопробуйте онлайн!
Объяснение:
источник
APL (Dyalog Unicode) , 30 байтов SBCS
Функция анонимного молчаливого префикса. Печатает числа в отдельных строках на стандартный вывод.
Попробуйте онлайн!
{
}∘1
⍺=⍵
⍺
⋄
еще:⎕←⍵
⍺-
⍵,
10⍟
⌊
пол тех⌊/
минимум из тех10*
десять возведены в силу этого⍵+
⍺∇
источник
05AB1E , 15 байтов
Порт @PaulMutser (первый) Haskell ответ «s , поэтому убедитесь , что upvote его !!
Попробуйте онлайн или проверьте все контрольные примеры .
Выводит числа, разделенные символом новой строки.
Если это должен быть список, я должен добавить 3 байта:
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Желе , 19 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 51 байт
Попробуйте онлайн!
источник
Пакет, 131 байт
Принимает ввод в качестве параметра командной строки и выводит список чисел в STDOUT. Объяснение:
Начните с
n=1
иi=1
представляющих силу 10.Умножьте
i
на 10, еслиn
достиг следующей степени 10.Выведите текущее значение
n
.Повторите, пока
i
можно добавитьn
без превышения ввода.Восстановите предыдущее значение
n
и разделитеi
на 10.Если
i
не равно нулю , то попробуйте добавитьi
кn
снова.источник
R ,
6765 байт-2 байта благодаря Джузеппе
Довольно просто Требуется набор из 10 степеней сверх того, что было бы необходимо в обратном порядке.
i
.(Я бы предпочел использовать
i=10^rev(0:log10(k))
вместо,i=10^(k:0)
так как последний вычислительно неэффективен, но гольф это гольф!).Затем в цикле while применяет условия
i
и принимает первое (т.е. наибольшее); обновляетn
и добавляет к выводуПопробуйте онлайн!
источник
T
вместоn
; должно быть 2, но я не думаю, чтоTRUE
это приемлемый результатk=1
, поэтому мы установилиo=+T
. Попытайся!o=1
и получить второй байт.Желе , 12 байт
Попробуйте онлайн!
источник
Пип , 27 байт
Попробуйте онлайн!
В псевдокоде:
Я очень доволен уловками игры в гольф, которые я смог применить, чтобы сократить этот алгоритм. Благодаря инициализации, обновлению и печати содержимого в заголовке цикла я смог избежать использования фигурных скобок для тела цикла. Там, вероятно, алгоритм игры в гольф, хотя.
источник
Japt , 18 байт
Попытайся
источник
C # (интерактивный компилятор Visual C #) ,
123122 байтаПопробуйте онлайн!
источник
Пролог (SWI) , 142 байта
Попробуйте онлайн!
Объяснение завтра или что-то
источник