Dada una entrada de una lista de sectores de una cadena, genera la cadena original.
Cada segmento se dará como una lista de longitud 2, que contiene la posición de inicio del segmento (un entero ≥0) y el segmento en sí. Si su idioma no admite matrices de tipos arbitrarios, también puede tomar esto como una estructura o similar, o simplemente una cadena que consiste en el número, un espacio y luego el segmento.
El orden de los dos elementos de cada segmento depende de usted. Además, si elige usar la representación de cortes como una matriz de longitud 2, puede tomar la entrada como una matriz bidimensional o una matriz plana única. Finalmente, la posición que representa el número entero puede estar indexada a cero o indexada a una (todos los ejemplos aquí están indexados a cero).
La entrada siempre será suficiente para determinar la cadena completa hasta la posición más alta dada. Es decir, no habrá "agujeros" o "brechas". Por lo tanto, la salida no debe contener caracteres finales o iniciales adicionales (excepto la nueva línea final opcional típica). La entrada siempre será coherente y ningún segmento entrará en conflicto entre sí.
Como se trata de code-golf , ganará el código más corto en bytes.
Casos de prueba:
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
Respuestas:
Jalea,
109 bytesPruébalo en línea!
Cómo funciona
fuente
Python 2, 49 bytes
Primero, alinee las cadenas rellenando sus desplazamientos con espacios (mostrados como guiones bajos para mayor claridad)
A continuación, los usos
map
azip
y tomar el máximo de cada columna, que ignora los valores más pequeños de espacios (el más pequeño carácter imprimible) yNone
es donde algunas cadenas eran demasiado cortos.Finalmente,
''.join
a una cuerda usando el[2::5]
truco.fuente
Perl, 25
Se agregó +2 por
-lp
Obtenga la entrada de STDIN, p. Ej.
(Cierre con ^ D o ^ Z o lo que cierre STDIN en su sistema)
slices.pl
:fuente
v0
ahorrarle dos bytes (porque también podría omitir el espacio antes delx
)? Editar: Hm, no, cuando lo probé, obtuveCan't locate object method "x" via package "2"
(o el número que esté en mi primera línea) por alguna razón.JavaScript (ES6), 61 bytes
Editar: Guardado 4 bytes gracias a @ edc65.
fuente
Haskell, 57 bytes
Ejemplo de uso:
Cómo funciona: hacer pares de
(index,letter)
cada letra de cada segmento, concatenar en una sola lista, eliminar duplicados, ordenar por índice, eliminar índices.fuente
MATL , 15 bytes
Funciona con la versión actual (13.0.0) del lenguaje / compilador.
La entrada es con llaves y comillas simples. (Las llaves en MATLAB / MATL definen matrices de celdas , que son listas que pueden tener contenidos de tipos arbitrarios, posiblemente diferentes). Los casos de prueba son los siguientes:
Pruébalo en línea!
fuente
DUP , 14 bytes
Try it here.
Lambda anónima. Uso:
NOTA: DUP realmente no tiene matrices, así que espero que este formato de entrada esté bien.
Explicación
Bueno, la comprensión de cuerdas de DUP es ... interesante. Las cadenas se almacenan como una serie de variables numéricas, cada una de las cuales contiene un código de char de la cadena. Algo así
2"CG"
funciona como empujar 2 a la pila, luego crear una cadena con índice a partir de 2.Debido a que estos índices son realmente variables, pueden sobrescribirse. Eso es lo que realmente está haciendo la entrada: anular! Intente presionar Stepen el sitio del intérprete para tener una mejor idea de esto. Después de esto, obtenemos una cadena sin cortar.
Aquí es donde entra la salida.
fuente
PHP, 146 caracteres
Nota: Evaluar la entrada del usuario es siempre una buena idea.
Golfed
Sin golf
Puedes ver que solo estoy escribiendo la entrada en una matriz con la clave específica que tiene cada personaje y luego lo saco todo.
Pruebas
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> foobarbazphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Guión acortado por 107 caracteres. :REfuente
$a[$f]=$c;$f++;
No sé PHP, pero ¿no puede ser esto$a[$f++]=c;
?En serio, 48 bytes
En serio es muy malo en la manipulación de cuerdas.
Pruébalo en línea!
Explicación:
Mapa 1:
Mapa 2:
Mapa 3:
Mapa 4:
En pocas palabras, este programa crea una cadena con
n
espacios, donden
es la longitud mínima que la cadena puede basarse en la entrada. Determina el índice en la cadena de resultados de cada carácter en cada segmento, y establece el carácter en la cadena de resultados en ese índice para el carácter.fuente
Python, 91 bytes.
Guardado 1 byte gracias al gato.
Es un poco largo Lo jugaré más en un rato.
fuente
Python,
119115bytesCasos de prueba
fuente
CJam, 26 bytes
Pruébalo en línea! . Toma entrada en forma
[["CG"2]["PP"0]["PC"1]]
.Explicación:
fuente
R, 181 bytes
Con saltos de línea:
Funciona en R Gui (una sola línea, o fuente para la de varias líneas) pero no en ideone, por ejemplo:
Nota sobre el método de entrada:
Supongo que cumplo con esta parte de la especificación con este tipo de entrada, se puede dar en varias líneas, esto no tiene impacto siempre que haya una línea en blanco para finalizar la entrada.
Creo que se pueden guardar 2 caracteres eliminando el +1 y usando la indexación basada en 1, pero comencé con la entrada de desafío.
fuente
C, 110 bytes
Este programa toma el segmento después de su índice en una línea de entrada cada uno.
Sin golf:
Prueba en ideone.com
fuente
Lua, 113 bytes
Este es probablemente uno de los códigos más seguros que he escrito. La idea es simple. El usuario ingresará una matriz con el siguiente formato:
{{1, "1"}, {3, "3"}, {2, "2"}}
y luego la tabla se ordenará por el primer índice y se imprimirá el segundo índice.fuente