Получив список N
неотрицательных целых чисел, выведите эти числа с пробелами слева, чтобы длина составляла N
. (Либо верните список символов или строк.) Вы можете предположить, что N
он больше или равен количеству цифр самого большого числа в списке. В конце допускаются пробелы.
Вы также можете взять строку, содержащую эти числа, но N
это не длина строки, а количество элементов в списке; также вы можете взять список строк, например ["1", "2", "3"]
.
Это код-гольф, поэтому выигрывает самая короткая программа в байтах.
Контрольные примеры
input => 'output'
0 => '0'
1 => '1'
2 3 => ' 2 3'
2 10 => ' 210'
4 5 6 => ' 4 5 6'
17 19 20 => ' 17 19 20'
7 8 9 10 => ' 7 8 9 10'
100 200 300 0 => ' 100 200 300 0'
1000 400 30 7 => '1000 400 30 7'
1 33 333 7777 => ' 1 33 3337777'
0 0 0 0 0 0 => ' 0 0 0 0 0 0'
Ответы:
05AB1E , 3 байта
Код:
Объяснение:
Попробуйте онлайн! или Проверьте все контрольные примеры .
источник
Python, 32 байта
Анонимная функция, которая принимает кортеж в качестве входных данных. Либо числа, либо строки работают.
Пример:
источник
JavaScript (ES7), 37 байт
Входные данные: массив строк.
Выходные данные: массив строк.
Показать фрагмент кода
источник
PowerShell v2 +, 36 байт
Принимает ввод
$a
как массивint
egers. Перебирает их с$a|%{...}
. Каждая итерация использует-f
оператор ormat с необязательнымAlignment Component
(на основе$a.count
), чтобы заполнить левым полем соответствующее количество пробелов. Эта результирующая строка остается в конвейере. В конце выполнения программы все полученные строки остаются в конвейере в виде массива.Примеры
Вывод разделен символом новой строки при каждом запуске, так как это значение
Write-Output
по умолчанию при завершении программы для массива.источник
JavaScript, 49 байт
Принимает аргументы как список строк, а также возвращает список строк.
Объяснение:
источник
.join("")
не требуется.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
такой же длины, но работает как с целыми числами, так и со строками.Perl, 26 байт
-4 байта благодаря @Ton Hospel
25 байт кода +
-a
флаг.Бежать с :
(На некоторых старых версиях Perl может потребоваться добавить
-n
)источник
-a
опции сделает ваш код короче ...Баш, 14
Список ввода приведен в командной строке.
Не так много, чтобы объяснить здесь. Просто использует встроенные
printf
средства для выполнения необходимого заполнения, основываясь на количестве переданных аргументов:$#
количество переданных аргументов%<n>d
является спецификатором формата printf, который печатает целое число до n пробелов$@
список всех переданных аргументов$@
.Ideone .
источник
Vim, 19 байт
YPPG!{<C-F>|R%ri<CR>djVGgJ
Принимает список номеров по одному на строку. Полагается на то
:set expandtab
, что популярно, но не универсально.Вы явно хотите использовать
:right
для этого. Вопрос в том, как получить количество строк в командной строке. Традиционный способ:%ri<C-R>=line('$')
, но весь этот текст длинный.Короче, более предприимчивый подход состоит в том, чтобы сформировать командную строку, используя команду нормального режима
!
. Он включает в себя некоторые странные обходные пути, расширяя файл на 2 строки, затем удаляя их снова, но получается на 2 байта короче. И я шокирован искаженной командной строкой, которую я получаю (вроде:%ri+4!
), на самом деле работает, но это так.источник
expandtab
добавляет 7 ударов к этому решению. Причина в том, что мне приходится искать другие подходы, чтобы избежать / удалить вкладки, которые теперь могут выиграть. Это много времени, совсем не весело, ухудшает качество моего решения и даже не влияет ни на один из предоставленных тестовых случаев (ни у одного не более 8+ номеров). Если это правило, то это правило, но я бы предпочел не участвовать в соревнованиях, чем делать это безexpandtab
.Ypp!{
. Это действительно короче. Это также не работает. Это всегда принесло бы число 1 в командную строку, независимо от длины файла.Рубин,
403634 байтаМожно работать больше.
Звони как лямбда.
Объяснение:
источник
Желе ,
76 байтВвод представляет собой массив строк. Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Mathematica, 25 байтов
И вход, и выход являются списками строк.
объяснение
Получить длину ввода (номер элемента).
Pad оставил каждый элемент на входе так, чтобы их длина соответствовала длине ввода.
источник
JavaScript (ES6), 47
Анонимная функция, вход: массив строк, вывод: массив строк
Использование рекурсивной функции заполнения
Для целочисленного / строкового массива в качестве входных данных, 49 байтов:
Тестовое задание
источник
PHP, 55 байт
Peeve Version 59 байт
источник
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 байта
Попробуйте онлайн!
Унарная функция, принимающая список чисел справа в виде массива и возвращающая дополненную строку.
Здесь это используется в REPL. Обратите внимание, что строки ввода имеют отступ в три пробела.
источник
CJam , 11 байт
Попробуйте онлайн!(Как набор тестов.)
объяснение
источник
Котлин, 90 байт
Golfed:
Ungolfed:
источник
Haskell, 47 байтов
Это функция из списка строк в список строк, как в ответах JavaScript.
replicate
позволяет получить список (строки Haskell - списки символов) заданного размера, поэтому я использую его - и жирное предположение в задаче - для генерации заполнения (его длинаN
- <длина элемента>, для каждого элемента из списка ввода). Я бы предпочел использоватьprintf
решение на основе, а не это сreplicate
(оно было бы короче, во-первых), но оператор import убивает любые сбережения, сделанные на самой функции.источник
Ява,
8382 байтаСоздает строку формата, предназначенную для заполнения заданных аргументов числом пробелов, равным длине массива. Строка формата используется в качестве аргумента для
String.format
, а затем возвращается результат. Функциональный интерфейс может принимать или aString[]
или aInteger[]
или подобное.Полный класс:
Попробуйте это на Ideone.
-1 байт благодаря @KevinCruijssen.
источник
int ...
иs+=...
внутриif
так:for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 байт
Принимает только массив строк, выводит массив дополненных строк.
источник
MATL, 14 байтов
Попробуйте это в MATL Online
При этом используется создание форматированной строки, сначала создав
%(NUM)d
строку форматирования, а затем снова применяет форматирование строки с использованием этой строки форматирования и ввода.источник
JavaScript 33 байта
похож на @Hedi - но по умолчанию используется дополнение '', поэтому его 4 символа меньше
источник
К (ок) , 11 байт
Решение:
Попробуйте онлайн!
Объяснение:
Интерпретируется справа налево. Преобразовать в строку и заполнить левой клавишей с длиной списка, затем сгладить:
источник
Pyth - 7 байт
Простой ответ с использованием встроенного отступа.
Тестовый пакет .
источник
C #, 39 байт
Принимает
List<string>
и выводитList<string>
.Объяснение:
Было бы на несколько байтов короче использовать LINQ, если импорт не учитывается, а затем возвращается
IEnumerable<string>
вместо полного списка:C #, 35 + 18 = 53 байта
источник
R, 47 байт
Читает ввод из stdin и использует форматирование в стиле C с
sprintf
. Должен быть какой-то способ, которымcat
функция не нужна, но не мог найти способ подавить кавычки на каждом элементе без него. Если нам нужны только начальные и конечные кавычки, мы можем использовать немного более длинную опцию:источник