При вводе списка чисел в формате сокращенно увеличивающейся последовательности целых чисел выведите последовательность полностью.
Сокращенно увеличивающий формат последовательности целых чисел работает, находя каждое число n с меньшим количеством цифр, чем число, предшествующее ему, m . С d в качестве количества цифр в n , последние d цифр m заменяются всеми цифрами n . Вот пример ввода:
123 45 6 7 89 200
Применяя правило замены, мы сначала превращаем 45 в 145, потому что 45 <123:
123 145 6 7 89 200
Повторно применяя то же правило, это становится:
123 145 146 7 89 200
123 145 146 147 89 200
123 145 146 147 189 200
Последовательность теперь отсортирована (нет чисел, к которым применяется правило), так что это окончательный результат.
Вы можете предположить, что
сокращенная запись всегда используется, когда это возможно. Например, ввод будет
12 3
, никогда12 13
.числа никогда не будут уменьшаться при сохранении того же количества цифр. Например, ввода никогда не будет
333 222
.применение правила сокращения никогда не приведет к числу, которое будет все еще меньше, чем предыдущее число в последовательности. Например, ввода никогда не будет
123 12
.числа всегда будут положительными целыми числами и никогда не будут содержать начальные 0 (если используется формат строки).
полная расширенная последовательность никогда не будет содержать повторяющихся чисел. (Тем не менее, сокращенная последовательность может быть; например,
10 1 20 1
->10 11 20 21
.)на входе будет хотя бы одно число.
Ввод и вывод могут быть либо списками / массивами чисел / строк, либо одной строкой с элементами, разделенными любой нецифровой цифрой.
Поскольку это код-гольф , победит самый короткий код в байтах.
Контрольные примеры с вводом и выводом на чередующихся строках:
1 2 3 10 1 2 20 5 100 200 10 3 5 26 9 99 999 9999
1 2 3 10 11 12 20 25 100 200 210 213 215 226 229 299 999 9999
223 1184 334 441 5 927 2073 589 3022 82 390 5 9
223 1184 1334 1441 1445 1927 2073 2589 3022 3082 3390 3395 3399
5 10 5 20 5 30 5 40 5 50 5
5 10 15 20 25 30 35 40 45 50 55
7 8 9 70 80 90 700 800 900 7000 8000 9000
7 8 9 70 80 90 700 800 900 7000 8000 9000
42
42
Ответы:
Желе, 7 байт
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Javascript,
4542 байта3 байта от спасибо @Neil .
Вышеприведенная функция ожидает массив строк.
Показать фрагмент кода
источник
z=z.slice(0,-x.length)+x,z=''
(или имя переменной по вашему выбору).s=>s.split` `.map(
она на 2 байта (я дважды проверил на этот раз) короче, чемs=>s.replace(/\d+/g,
.Сетчатка, 45 байт
Использует балансировочные группы для подсчета цифр, которые стоят дорого. Лучшего подхода пока не нашел, но я заинтересован в нем.
Попробуйте это онлайн здесь.
источник
Гема, 35 знаков
Ввод: строка с числами, разделенными чем-либо, выходная строка.
Образец прогона:
источник
Рубин, 39 знаков
Вход: массив строк, вывод: массив строк.
Образец прогона:
источник
Python 2 , 58 байт
Попробуйте онлайн!
источник