Не ненавидите, когда хотите скопировать и вставить список чисел (вектор, массив ...) из одной программы в другую, но формат, в котором у вас есть числа, не соответствует формату, в котором вы нуждаетесь ?
Например, в MATLAB у вас может быть список, разделенный пробелами, например:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
В Python вам нужно будет ввести запятые, чтобы сделать этот список допустимым, поэтому вам придется преобразовать его в
[1, 2, 3, 4, 5]
чтобы это работало. В C ++ вы можете захотеть что-то вроде:
{16,2,77,29}
и так далее.
Чтобы упростить жизнь каждого, давайте создадим конвертер списков, который берет список в любом формате * и выводит список в другом указанном формате.
Допустимые скобки:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
Допустимые разделители:
a,b,c
a;b;c
a b c
a, b, c <-- Several spaces. Must only be supported as input.
a; b; c <-- Several spaces. Must only be supported as input.
a b c <-- Several spaces. Must only be supported as input.
Обратите внимание, что входные данные могут иметь любое количество пробелов между числами, но выходные данные могут иметь нулевые пробелы (если ,
или ;
используется в качестве разделителя) или один пробел (если он разделен пробелами).
В дополнение к списку ввода будет строка (или два символа), определяющая формат вывода. Строка формата первой будет типом открывающей скобки (только), [
, (
, <
, {
или (последний из которых является единым пространство используется , когда нет окружающей скобки). Кронштейн типа будет сопровождаться типа разделителем,
,
, ;
или (последний из которых является один пробел). Два символа входного формата должны восприниматься как один аргумент (строка или два последовательных символа) в порядке, описанном выше.
Некоторые примеры форматных строк:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Правила:
- Выход не может иметь начальные пробелы
- Вывод может иметь завершающие пробелы и перевод строки
- На выходе должен быть только список чисел, а не
ans =
аналогичный
- На выходе должен быть только список чисел, а не
- Входными данными будут список целых или десятичных чисел (как положительных, так и отрицательных (и ноль)), а также строка из двух символов
- Если входные данные состоят только из целых чисел, список вывода должен содержать только целые числа. Если входной список состоит из целых и десятичных чисел, все выходные числа могут быть десятичными числами. (Необязательно хранить целые числа как целые числа)
- Максимальное количество цифр после запятой, которое должно поддерживаться, равно 3.
- На вход будет два аргумента. Т.е. числа находятся в одном аргументе, а строка формата - это единственный аргумент.
- Код может быть программой или функцией
- Ввод может быть аргумент функции или STDIN
Несколько примеров:
1 2 3 4
[,
[1,2,3,4]
<1; 2; 3>
; <-- Space + semicolon
1;2;3
not valid: 1.000;2.000;3.000 (Input is only integers => Output must be integers)
{-1.3, 3.4, 4, 5.55555555}
[,
[-1.300,3.400,4.000,5.556] (5.555 is also valid. Rounding is optional)
also valid: [-1.3,3.4,4,5.55555555]
Самый короткий код в байтах побеждает. Как всегда, победитель будет выбран через неделю после того, как был объявлен конкурс. Ответы, которые публикуются позже, все равно могут выиграть, если они короче текущего победителя.
Leaderboard
Фрагмент стека в нижней части этого поста создает каталог из ответов а) в виде списка кратчайшего решения для каждого языка и б) в качестве общей таблицы лидеров.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать имя языка ссылкой, которая будет отображаться во фрагменте кода:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
для обозначения отрицательных элементов. :(