Учитывая ввод списка фрагментов строки, выведите исходную строку.
Каждый срез будет представлен в виде списка длиной 2, содержащего начальную позицию среза (целое число ≥0) и сам срез. Если ваш язык не поддерживает массивы произвольных типов, вы также можете принять это как структуру или аналог, или просто строку, состоящую из числа, пробела, а затем среза.
Порядок двух элементов каждого среза зависит от вас. Кроме того, если вы решите использовать представление срезов в виде массива длины 2, вы можете использовать входные данные как двухмерный массив или как один плоский массив. Наконец, целое число, представляющее позицию, может быть либо с нулевым индексом, либо с одним индексом (все примеры здесь имеют нулевой индекс).
Ввод всегда будет достаточным для определения всей строки до заданной максимальной позиции. То есть не будет «дыр» или «пробелов». Следовательно, выходные данные не должны содержать никаких дополнительных завершающих или начальных символов (кроме типичного необязательного завершающего символа новой строки). Ввод всегда будет согласованным, и никакие срезы не будут конфликтовать друг с другом.
Поскольку это код-гольф , победит самый короткий код в байтах.
Тестовые случаи:
In Out
-----------------------------------------------------------
[[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG
[[0, "foobarbaz"]] | foobarbaz
[[0, "foobar"], [6, "baz"]] | foobarbaz
[[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz
[[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
Ответы:
Желе,
109 байтПопробуйте онлайн!
Как это работает
источник
Python 2, 49 байт
Во-первых, выровняйте строки, заполнив их смещения пробелами (для ясности показаны подчеркиваниями)
Затем, использует
map
дляzip
и взять максимум каждого столбца, который игнорирует меньшие значения пространств (наименьший печати символов) иNone
S , где некоторые строки были слишком коротки.Наконец,
''.join
к строке, используя[2::5]
трюк.источник
Perl, 25
Добавлено +2 для
-lp
Получите информацию от STDIN, например
(Закрыть с помощью ^ D или ^ Z или любого другого, что закрывает STDIN в вашей системе)
slices.pl
:источник
v0
сэкономить вам два байта (потому что вы также можете опустить пробел передx
)? Редактировать: Хм, нет, когда я попробовал это, я получилCan't locate object method "x" via package "2"
(или любой другой номер в моей первой строке) по какой-то причине.JavaScript (ES6), 61 байт
Редактировать: 4 байта сохранены благодаря @ edc65.
источник
Haskell, 57 байт
Пример использования:
Как это работает: создавать пары
(index,letter)
для каждой буквы каждого фрагмента, объединять в один список, удалять дубликаты, сортировать по индексу, удалять индексы.источник
MATL , 15 байт
Работает с текущей версией (13.0.0) языка / компилятора.
Ввод осуществляется с помощью фигурных скобок и одинарных кавычек. (Фигурные скобки в MATLAB / MATL определяют массивы ячеек , которые представляют собой списки, которые могут иметь содержимое произвольного, возможно, различного типа.) Таким образом, тестовые примеры:
Попробуйте онлайн!
источник
DUP , 14 байтов
Try it here.
Анонимная лямбда. Использование:
ПРИМЕЧАНИЕ: DUP на самом деле не имеет массивов, поэтому я надеюсь, что этот формат ввода в порядке.
объяснение
Ну, понимание строки DUP ... интересно. Строки хранятся в виде последовательности числовых переменных, каждая из которых содержит код строки. Нечто подобное
2"CG"
работает так, что вы помещаете 2 в стек, а затем создаете строку с индексом, начинающимся с 2.Поскольку эти индексы действительно переменные, они могут быть перезаписаны. Вот что действительно делает вход: переопределение! Попробуйте нажать Stepна сайте переводчика, чтобы получить лучшее представление об этом. После этого мы получаем несрезанную строку.
Вот где приходит вывод.
источник
PHP, 146 символов
Примечание. Оценка пользовательского ввода всегда хорошая идея.
Golfed
Ungolfed
Вы можете видеть, что я просто записываю ввод в массив с определенным ключом, который есть у каждого символа, а затем выводю все это.
тесты
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> Фубарбазphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Сокращенный сценарий на 107 символов. : Dисточник
$a[$f]=$c;$f++;
Я не знаю PHP, но не может ли это быть$a[$f++]=c;
?Серьезно, 48 байтов
Серьезно это серьезно плохо к манипуляции со струнами.
Попробуйте онлайн!
Объяснение:
Карта 1:
Карта 2:
Карта 3:
Карта 4:
В двух словах, эта программа создает строку с
n
пробелами, гдеn
минимальная длина строки может быть основана на вводе. Он определяет индекс в строке результата каждого символа в каждом срезе и устанавливает символ в строке результата в этом индексе на символ.источник
Python, 91 байт.
Сохранено 1 байт благодаря кат.
Это немного долго. Я буду играть в гольф немного позже.
источник
Питон,
119115 байтКонтрольные примеры
источник
CJam, 26 байтов
Попробуйте онлайн! , Принимает участие в форме
[["CG"2]["PP"0]["PC"1]]
.Объяснение:
источник
R 181 байт
С переносами строк:
Работает в R Gui (одна строка или поиск для многострочной), но не в ideone, например:
Обратите внимание на метод ввода:
Я предполагаю, что я соглашаюсь с этой частью спецификации с этим типом ввода, он может быть задан на нескольких строках, это не оказывает влияния, если есть пустая строка для завершения ввода.
Я думаю, что 2 символа можно сохранить, удалив +1 и используя индексирование на основе 1, но я начал с ввода запроса.
источник
C, 110 байтов
Эта программа берет фрагмент после его индекса в одной строке ввода каждая.
Ungolfed:
Тест на ideone.com
источник
Луа, 113 байт
Это, вероятно, один из наиболее безопасных кодов, которые я написал. Идея проста. Пользователь введет массив в следующем формате:
{{1, "1"}, {3, "3"}, {2, "2"}}
таблица будет отсортирована по первому индексу, а второй индекс будет напечатан.источник