Introducción
Para este ejemplo, tomemos la cadena Hello, World!
y la matriz [3, 2, 3]
. Para encontrar la cadena de subcadenas, pasamos por el siguiente proceso:
El primer número de la matriz es 3
, por lo que obtenemos la subcadena [0 - 3]
, que es Hel
. Después de eso, eliminamos los primeros 3
caracteres de la cadena inicial, lo que nos deja con lo, World!
.
El segundo número de la matriz es 2
, por lo que obtenemos la subcadena [0 - 2]
de nuestra nueva cadena, que nos da lo
. La cadena sobrante se convierte en , World!
.
El último número es un 3
, que nos da , W
. La cadena de subcadenas son todas las subcadenas combinadas, lo que nos da:
['Hel', 'lo', ', W']
Para un ejemplo más visual:
[3, 2, 3], 'Hello, World!'
3 -> Hel
2 -> lo
3 -> , W
La tarea
Dada una cadena no vacía y una matriz no vacía que solo consta de enteros positivos ( > 0
), genera la cadena de subcadena . Puede suponer que la suma de todos los enteros en la matriz no excede la longitud de la cadena.
También puede suponer que las cadenas nunca contendrán nuevas líneas.
Casos de prueba
Input: abcdefghijk, [2, 1, 3]
Output: ['ab', 'c', 'def']
Input: Code Golf, [4, 1]
Output: ['Code', ' ']
Input: Ayyy, [3]
Output: ['Ayy']
Input: lexicographically, [2, 2, 2, 7, 4]
Output: ['le', 'xi', 'co', 'graphic', 'ally']
Este es el código de golf , por lo que gana el envío con el menor número de bytes.
Python 2, 42 bytes
A veces lo haces de forma aburrida.
fuente
Brachylog ,
2013 bytesPruébalo en línea!
Esto es extremadamente ineficiente y agota el tiempo de espera en TIO para el último caso de prueba.
Explicación
Una versión un poco más eficiente, 15 bytes.
fuente
Python 3, 45 bytes
Esto imprime una subcadena por línea y termina con un error cuando a se agota.
Probarlo en repl.it .
fuente
Python,
52, 46 bytesUna función lambda recursiva.
¡Gracias a Dennis por reducir 6 bytes!
fuente
Jalea , 6 bytes
Pruébalo en línea!
fuente
Haskell, 34 bytes
Ejemplo de uso:
"lexicographically" # [2,2,2,7,4]
->["le","xi","co","graphic","ally"]
Recurrencia simple
O la aburrida solución de 29 bytes a través de incorporado:
fuente
Rubí, 26 bytes
Las cadenas se representan como matrices de caracteres.
fuente
PowerShell v2 +, 46 bytes
Toma la cadena de entrada
$a
y la matriz$b
, se repite$b
. Cada iteración, hace una porción de matriz$a
basada en$i
(por defecto$null
, o0
) y el número actual. Necesita hacer el-1
y$i++
porque las cadenas en PowerShell están indexadas a cero.Ejemplos
(La salida aquí está separada por espacios, porque ese es el método de stringificación predeterminado para las matrices)
fuente
Perl, 28 bytes
Incluye +1 para
-n
Ejecute con la cadena de entrada en STDIN seguido de cada número en una línea separada:
Solo el código:
La versión de 23 bytes sin
||"^"
también funciona, pero imprime líneas falsas"^"
puede ser reemplazado por$_
si la cadena no contiene meta caracteres regexfuente
MATL , 8 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6),
393835 bytesGuardado 3 bytes gracias a ETHproductions:
Ejemplo:
Solución anterior:
38 bytes gracias a Huntro:
39 bytes:
fuente
.slice
guarda algunos bytes:s=>a=>a.map(v=>s.slice(t,t+=v),t=0)
Lote, 74 bytes
Estoy golpeando a C? ¡Esto no puede ser correcto! Toma la cadena en STDIN y la matriz como argumentos de línea de comandos.
fuente
Java, 119 bytes
Golfizado:
Modifiqué la respuesta de Roman Gräf ( /codegolf//a/93992/59935 ), pero no tengo suficiente representante para comentar.
Cambié la implementación del bucle y, en lugar de establecer la cadena de origen en otra subcadena en cada iteración, simplemente cambio los índices con los que obtengo la subcadena.
fuente
Pyke, 10 bytes
Pruébalo aquí!
fuente
sed (82 + 2 para -rn) 84
La primera línea de entrada es la cadena. Luego, cada línea después de eso es del tamaño de una subcadena en unario .
Ejemplo:
fuente
CJam , 11 bytes
Pruébalo en línea!
Explicación
fuente
C, 81 bytes
Debido a que la
write()
salida no está almacenada en un búfer, cualquier compilador en línea tendrá dificultades para enviar esto.prueba.c :
Salida sin tubería:
fuente
PHP, 98 bytes
Uso:
Salida:
Probablemente haya una mejor solución con PHP.
fuente
PHP, 82 bytes
Toma la entrada como una cadena y luego una lista de números, la salida está separada por nuevas líneas. p.ej
Si eres una de esas personas capaces de usar $ argv con -r, puedes guardar los 6 bytes utilizados para la etiqueta de apertura.
fuente
$argv[++$i]
. ¿Por qué no$argv[1]
y$argv[2]
?$argv[2]
porque necesitemos iterar a través de los argumentos supiled y es$argv[++$i]
la primera vez que evitamos la necesidad de ay,$i=1
ahorrando 2 bytes.PHP, 63 bytes
Salida como matriz de 85 bytes
fuente
Pyth, 7 bytes
Toma la entrada separada por nueva línea, con la cadena sin escape y que viene después de la matriz. Pruébalo en línea!
Explicación:
fuente
Octava / MATLAB, 31 bytes
Esta es una función anónima con entradas
s
: cadena;a
: matriz numérica.Pruébalo en Ideone .
Explicación
Este es un puerto de mi respuesta MATL.
fuente
Java 142 bytes
Golfizado:
fuente
Awk, 36 caracteres
Ejecución de muestra:
En la vida real lo usaría así, pero no tengo idea de cómo calcular su puntaje:
fuente
Dyalog APL 16.0, 15 caracteres (no competitivos); 15.0, 17 bytes
16.0 solución
Dyalog APL 16.0 agrega la primitiva partición de APL2
⊂
, con el glifo⊆
.15.0 solución:
TryAPL en línea!
fuente
GNU sed, 55 + 2 (rn flags) = 57 bytes
Pruébalo en línea! (gracias a @Dennis por agregar sed)
Explicación: La cadena de entrada debe estar en la primera línea y los números, en unario , en líneas separadas después de eso. Una nueva línea se lee implícitamente al comienzo de un ciclo, ejecutando el script cada vez.
Prueba de funcionamiento: utilizando un documento aquí con EOF como marcador final
Salida:
fuente
Vimscript,
7978 bytesno muy bonito, estoy seguro de que se puede mejorar ...
Toma un búfer vim, luego llama
echom string(A([2,3]))
para ver la salidaDe hecho, pensé en hacer trampa y sacar la cadena
["abc", "def"]
... Pero me resistí: PExplicación: Eliminar (pone en el registro predeterminado) la cantidad de caracteres de cada elemento de la matriz y lo agrega a la matriz
r
... Una respuesta realmente aburrida.fuente
Lisp común,
7876 bytesAsumiendo que se permita la función anónima:
Uso
Salida
-2 bytes usando en
as
lugar deand
y cambiando la definición y para ajustar los paréntesis entre dos variables en(subseq ...)
fuente
Rebol, 38 bytes
fuente