Входные данные:
Список целых чисел
Выход:
Поместите каждую цифру (и знак минус) на отдельной дорожке, в порядке -0123456789
, игнорируя любые дублирующиеся цифры.
Пример:
Входные данные: [1,729,4728510,-3832,748129321,89842,-938744,0,11111]
Выход:
-0123456789 <- Added as clarification only, it's not part of the output
1
2 7 9
012 45 78
- 23 8
1234 789
2 4 89
- 34 789
0
1
Правила соревнований:
- Любые повторяющиеся цифры в номере игнорируются.
- Ввод / вывод может быть в любом разумном формате. Ввод может быть в виде списка / массива строк или символьного массива. Вывод может быть в виде списка строк, символов, символьной матрицы и т. Д.
- Конечные пробелы не являются обязательными.
- Любое количество ведущих или конечных новых строк не является обязательным (но не между строк).
- Ввод всегда будет содержать хотя бы одно целое число
- Вы должны поддерживать
-2,147,483,648
хотя бы целочисленный диапазон2,147,483,647
(32-битный). - Ввода-лист никогда не будет содержать
-0
,00
(или более двух нулей), или целые числа с ведущими нулями (то есть012
). - Если ваш язык использует другой символ для отрицательных чисел (например, заглавные
¯
), вы также можете использовать его, если он соответствует. - Вам разрешено иметь разделитель пробелов между цифрами (поэтому
- 0 1 2 3 4 6 7 9
вместо 5 может быть строка без 5 или 8-01234 67 9
), если она согласована (и, следовательно, между-
и должен быть пробел0
).
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
Input: [1,729,4728510,-3832,748129321,89842,-938744,0,11111]
Output:
1
2 7 9
012 45 78
- 23 8
1234 789
2 4 89
- 34 789
0
1
Input: [4,534,4,4,53,26,71,835044,-3559534,-1027849356,-9,-99,-3459,-3459,-94593,-10234567859]
Output:
4
345
4
4
3 5
2 6
1 7
0 345 8
- 345 9
-0123456789
- 9
- 9
- 345 9
- 345 9
- 345 9
-0123456789
Input: [112,379,-3,409817,239087123,-96,0,895127308,-97140,923,-748]
Output:
12
3 7 9
- 3
01 4 789
0123 789
- 6 9
0
123 5 789
-01 4 7 9
23 9
- 4 78
Input: [-15,-14,-13,-12,-11,10,-9,-8,-7,-5,-4,-3,-1,0,9,100,101,102,1103,104,105,106,116,-12345690]
Output:
- 1 5
- 1 4
- 1 3
- 12
- 1
-01
- 9
- 8
- 7
- 5
- 4
- 3
- 1
0
9
01
01
012
01 3
01 4
01 5
01 6
1 6
-0123456 9
Input: [99,88,77,66,55,44,33,22,11,10,0,0,0,-941]
Output:
9
8
7
6
5
4
3
2
1
01
0
0
0
- 1 4 9
¯
вместо-
?"-0 1 2 3 4 <space> 6 7 <space> 9"
(по некоторым причинам в комментариях сворачиваются несколько пробелов)Ответы:
Stax , 8 байт
Запустите и отладьте его
Требуется одно число в строке на стандартном вводе. Он работает, находя целевой индекс каждого символа и присваивая его этому индексу результата. Если индекс выходит за границы, массив расширяется нулями до тех пор, пока он не уместится. Во время вывода
0
становится пробелом. Остальные коды символов.Распакованный, распакованный и прокомментированный, вот как это выглядит.
Запустите этот
источник
["7"]
. Этот формат также может обрабатывать несколько значений, таких как["34", "43"]
.05AB1E , 13 байтов
Код:
Использует кодировку 05AB1E . Попробуйте онлайн!
Объяснение:
источник
vðTúyvyÐd+ǝ},
;).ǝ
будет ли так работать-0
. Но теперь, когда я понял это, на самом деле это число, а не строка, как я впервые прочитал: PHaskell , 51 байт
-1 байт благодаря Лайкони .
Попробуйте онлайн!
Этот вызов является цифровым. D:
источник
"-0123456789"
на байт короче'-':['0'..'9']
.JavaScript,
5958 байтВвод и вывод в виде массива строк.
Попытайся
оригинал
Принимает ввод как массив строк и выводит массив символьных массивов
Показать фрагмент кода
источник
APL (Dyalog) ,
3212 байтов28 байтов сохранено благодаря @ Adám и @ngn
Попробуйте онлайн!
источник
{' '@(~∊∘⍵)'¯',⎕D}¨
. Очевидно, также можно взять-
с тривиальным изменением.{⊃¨⍵∘.∩'¯',⎕d}
⊃¨⎕∘.∩'¯',⎕d
05AB1E ,
1713 байтСохранено 4 байта благодаря Аднану
Попробуйте онлайн!
объяснение
источник
Рубин , 42 байта
Анонимная лямбда-обработка массива чисел:
Попробуйте онлайн!
Кроме того, полностью Perl-подобная полная программа намного короче. Я бы сказал, что
-pl
переключатели выглядят довольно забавно в этом контексте:Рубин
-pl
, 29 байтПопробуйте онлайн!
Наконец, возможно следующее, если для выходных строк допустимо заключать в кавычки:
Рубин
-n
, 27 байтПопробуйте онлайн!
источник
JavaScript (Node.js) , 60 байт
Попробуйте онлайн!
источник
join
трюк прекрасен - но вопрос звучит так, как будто массив строк в порядке, поэтому, может быть, вы можете побрить 8 байтов, удалив его?(X+"").includes(x)
наRegExp(x).test(X)
(X+"").match(x)
будет еще короче. Вопрос также позволяет входным данным быть массивом строк, так что это может быть дажеX.match(x)
.Japt , 16 байт
Ввод и вывод в виде массива строк.
Попытайся
объяснение
источник
Python 3 ,
7764 байта-12 байт благодаря @Rod
Попробуйте онлайн!
Моя первая правильная попытка игры в гольф на Python. Советы приветствуются!
Возвращает двумерный массив символов.
источник
'-0123456789'
вместо этогоrange(10)
и поместите первый блок и подкачкуstr(z)
сz
, вы также можете переключиться на python2 и использовать`y`
вместоstr(y)
(``
это + - эквивалентrepr
)in "-
.Perl 5
-pl
, 33 байтаПопробуйте онлайн!
Принимает ввод как разделенную строку.
источник
Haskell , 47 байтов
Попробуйте онлайн!
Используется
max
для вставки пробела, в котором отсутствует элемент, поскольку пробел меньше любой цифры или знака минус.Если безбожное количество завершающих пробелов в порядке, можно сохранить два байта:
45 байт
Попробуйте онлайн!
источник
MATL , 13 байт
Ввод - это массив ячеек строк. Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
J ,
3227 байт-5 байт благодаря FrownyFrog!
Попробуйте онлайн!
Оригинальное решение:
J , 32 байта
Объяснение:
@":
преобразовать в символы и}11$' '"0
изменить содержимое массива из 11 пробелов на эти символы'_0123456789'i.[
в местах, обозначенных индексами символов в этом спискеПопробуйте онлайн!
источник
10|.":(10<."."0@[)}11$' '"0
Google Sheets , 124 байта
Ввод - это разделенный запятыми список в ячейке
A1
. Выход находится в диапазоне,B1:L?
где?
, однако, было введено много записей. (Вы можете разместить формулу где угодно, я просто выбралB1
для удобства.) Обратите внимание, что Sheets автоматически добавит четыре закрывающие скобки в конец формулы, сохранив нам эти четыре байта.Еще один тест и другой тест
Объяснение:
Mid("-0123456789",Row($1:$11),1)
выбирает каждого из 11 символов по очереди.Find(Mid(~),Split(A1,","))
ищет эти символы в каждом из элементов ввода. Это либо возвращает числовое значение, либо, если оно не найдено, ошибку.If(IsError(Find(~)," ",Mid(~))
вернет пробел, если персонаж не был найден, или символ, если он был. (Хотелось бы, чтобы был способ избежать дублированияMid(~)
части, но я не знаю ни одной.)ArrayFormula(If(~))
это то, что делает ссылки на несколько ячеекMid(~)
иFind(~)
работают. Кроме того, формула в одной ячейке возвращает значения в нескольких ячейках.Transpose(ArrayFormula(~))
транспонировать возвращенный массив, потому что он начинается сбоку.источник
Желе , 12 байт
Попробуйте онлайн!
-2 благодаря Джонатану Аллану, который прочитал правило, которое я не сделал.
Обратите внимание, что формат ввода-вывода, используемый в ссылке TIO, не является фактическим, который вводится как список строковых представлений и выводится как список строк.
источник
Perl 6 , 35 байт
Попробуйте онлайн!
Выходными данными является матрица символов, содержащая либо совпадения с регулярным выражением, либо пробелы.
источник
-pe
, позволит вам обойтись без начального .map, фигурные скобки и своп$^a
для$_
-p
и-n
как-то глючит , по крайней мере на TIO. Почему-то$_
не передается в блоки. Смотрите пример 1 , пример 2 .Java 8, 53 байта
Мой собственный вызов легче, чем я думал, когда я это сделал ..
Вход и выход как в
java.util.stream.Stream<String>
.Объяснение:
Попробуйте онлайн.
источник
C (gcc) , 159 байтов
Попробуйте онлайн!
источник
R ,
9675 байтПопробуйте онлайн!
Спасибо Кевину Круйссену за предложенный подход к регулярному выражению!
Принимает ввод из stdin как целые числа, разделенные пробелами, и печатает ascii-art в stdout.
источник
function(N)for(i in N)cat(paste(gsub(paste("[^","]",sep=i)," ","-0123456789"),"\n"))
. (Введите как строковый массив вместо целочисленного массива.) Попробуйте онлайн.SOGL V0.12 ,
1413 байтовПопробуй здесь!
Объяснение:
источник
SNOBOL4 (CSNOBOL4) , 85 байт
Попробуйте онлайн!
источник
Pyth, 14 байт
Принимает ввод как список строк и выводит список строк для каждой строки.
Попробуй здесь
объяснение
источник
Сетчатка , 26 байт
Попробуйте онлайн! Примечание: конечный пробел. Объяснение:
%
выполняет свой дочерний этап~
один раз для каждой строки ввода.~
сначала выполняет свой дочерний этап, который переносит строку в[^
и]<CR><SP>
, создавая программу, которая заменяет символы, не находящиеся в строке, пробелами. В"-0123456789"
указывает , что ввод этой программы является данная строка ($
замены допустимы , но я их не нужно).источник
Perl 5
-n
, 30 байтНе сработало бы, если
-
бы могло появиться где-то еще, кроме первой позицииПопробуйте онлайн!
источник
-
бы могло появиться где-то еще, кроме первой позиции если это может быть правдой, тогда вы не отвечаете на этот вызов, поскольку они больше не будут целыми числами. : PКрасный , 94 байта
Принимает ввод как блок строк
Попробуйте онлайн!
источник
CJam , 20 байтов
Попробуйте онлайн!
Принимает ввод как разделенный пробелами список целых чисел. Практически такой же подход, как и в ответе @adnans.
источник
C (gcc) ,
9594 байтаПопробуйте онлайн!
Ввод в виде списка строк. Вывод на STDOUT.
источник
c++
и изменивd=c?c+47:
наd=c++?c+46:
.К4 ,
3027 байтРешение:
Пример:
Объяснение:
Вернуть "-0123 ..." или "" на основе ввода. Интерпретируется справа налево. Нет конкуренции за ответ APL :(
источник
APL + WIN, 33 байта
Запрашивает ввод с экрана в виде строки
источник