Учитывая ввод списка фрагментов строки, выведите исходную строку.
Каждый срез будет представлен в виде списка длиной 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