Esta idea se basa libremente en el mensaje de chat de @ TùxCräftîñg .
Eche un vistazo a la secuencia de ejemplo a continuación:
INVALID0
` INVALID1
` INVALID2
INVALID3
` INVALID4
` ...INVALID9
Después INVALID9
, continúa así:
INVALI0
` INVALI1
` INVALI2
` INVALI3
` ...INVALI9
Y después INVALI9
, es así:
INVAL0
` INVAL1
` INVAL2
` INVAL3
` ...INVAL9
Después, INVAL9
es así:
INVA0
` INVA1
` INVA2
` INVA3
` ...INVA9
Observe cómo seguimos eliminando una letra de la palabra INVALID
cada vez.
Seguirás repitiendo esto hasta llegar a una sola letra, es decir, la letra I
:
I0
` I1
` I2
` I3
` I4
...I9
Ahora, su tarea es tomar una entrada de una palabra y producir una secuencia a partir de ella como en el ejemplo anterior. Su código también debe funcionar con letras individuales, y en ese caso la secuencia resultante será más corta.
Puede elegir cualquier formato de entrada y salida que prefiera (con o sin separador, según lo desee), pero debe especificar cuál ha elegido.
La secuencia debe estar en el orden exacto especificado.
El código más corto, en bytes, que completa con éxito este desafío, gana el desafío.
Secuencia completa en el ejemplo anterior:
INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, INVA2, INVA3, INVA4, INVA5, INVA6, INVA7, INVA8, INVA9, INV0, INV1, INV2, INV3, INV4, INV5, INV6, INV7, INV8, INV9, IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, IN9, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
Otros ejemplos:
Entrada: MAYBE
(mayúsculas y minúsculas no importan)
Salida:
MAYBE0, MAYBE1, MAYBE2, MAYBE3, MAYBE4, MAYBE5, MAYBE6, MAYBE7, MAYBE8, MAYBE9, MAYB0, MAYB1, MAYB2, MAYB3, MAYB4, MAYB5, MAYB6, MAYB7, MAYB8, MAYB9, MAY0, MAY1, MAY2, MAY3, MAY4, MAY5, MAY6, MAY7, MAY8, MAY9, MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, M0, M1, M2, M3, M4, M5, M6, M7, M8, M9
Entrada: AFTER
Salida:
AFTER0, AFTER1, AFTER2, AFTER3, AFTER4, AFTER5, AFTER6, AFTER7, AFTER8, AFTER9, AFTE0, AFTE1, AFTE2, AFTE3, AFTE4, AFTE5, AFTE6, AFTE7, AFTE8, AFTE9, AFT0, AFT1, AFT2, AFT3, AFT4, AFT5, AFT6, AFT7, AFT8, AFT9, AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7, AF8, AF9, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
Entrada: WHAT ARE YOU DOING
WHAT ARE YOU DOING0, WHAT ARE YOU DOING1, WHAT ARE YOU DOING2, WHAT ARE YOU DOING3, WHAT ARE YOU DOING4, WHAT ARE YOU DOING5, WHAT ARE YOU DOING6, WHAT ARE YOU DOING7, WHAT ARE YOU DOING8, WHAT ARE YOU DOING9, WHAT ARE YOU DOIN0, WHAT ARE YOU DOIN1, WHAT ARE YOU DOIN2, WHAT ARE YOU DOIN3, WHAT ARE YOU DOIN4, WHAT ARE YOU DOIN5, WHAT ARE YOU DOIN6, WHAT ARE YOU DOIN7, WHAT ARE YOU DOIN8, WHAT ARE YOU DOIN9, WHAT ARE YOU DOI0, WHAT ARE YOU DOI1, WHAT ARE YOU DOI2, WHAT ARE YOU DOI3, WHAT ARE YOU DOI4, WHAT ARE YOU DOI5, WHAT ARE YOU DOI6, WHAT ARE YOU DOI7, WHAT ARE YOU DOI8, WHAT ARE YOU DOI9, WHAT ARE YOU DO0, WHAT ARE YOU DO1, WHAT ARE YOU DO2, WHAT ARE YOU DO3, WHAT ARE YOU DO4, WHAT ARE YOU DO5, WHAT ARE YOU DO6, WHAT ARE YOU DO7, WHAT ARE YOU DO8, WHAT ARE YOU DO9, WHAT ARE YOU D0, WHAT ARE YOU D1, WHAT ARE YOU D2, WHAT ARE YOU D3, WHAT ARE YOU D4, WHAT ARE YOU D5, WHAT ARE YOU D6, WHAT ARE YOU D7, WHAT ARE YOU D8, WHAT ARE YOU D9, WHAT ARE YOU 0, WHAT ARE YOU 1, WHAT ARE YOU 2, WHAT ARE YOU 3, WHAT ARE YOU 4, WHAT ARE YOU 5, WHAT ARE YOU 6, WHAT ARE YOU 7, WHAT ARE YOU 8, WHAT ARE YOU 9, WHAT ARE YOU0, WHAT ARE YOU1, WHAT ARE YOU2, WHAT ARE YOU3, WHAT ARE YOU4, WHAT ARE YOU5, WHAT ARE YOU6, WHAT ARE YOU7, WHAT ARE YOU8, WHAT ARE YOU9, WHAT ARE YO0, WHAT ARE YO1, WHAT ARE YO2, WHAT ARE YO3, WHAT ARE YO4, WHAT ARE YO5, WHAT ARE YO6, WHAT ARE YO7, WHAT ARE YO8, WHAT ARE YO9, WHAT ARE Y0, WHAT ARE Y1, WHAT ARE Y2, WHAT ARE Y3, WHAT ARE Y4, WHAT ARE Y5, WHAT ARE Y6, WHAT ARE Y7, WHAT ARE Y8, WHAT ARE Y9, WHAT ARE 0, WHAT ARE 1, WHAT ARE 2, WHAT ARE 3, WHAT ARE 4, WHAT ARE 5, WHAT ARE 6, WHAT ARE 7, WHAT ARE 8, WHAT ARE 9, WHAT ARE0, WHAT ARE1, WHAT ARE2, WHAT ARE3, WHAT ARE4, WHAT ARE5, WHAT ARE6, WHAT ARE7, WHAT ARE8, WHAT ARE9, WHAT AR0, WHAT AR1, WHAT AR2, WHAT AR3, WHAT AR4, WHAT AR5, WHAT AR6, WHAT AR7, WHAT AR8, WHAT AR9, WHAT A0, WHAT A1, WHAT A2, WHAT A3, WHAT A4, WHAT A5, WHAT A6, WHAT A7, WHAT A8, WHAT A9, WHAT 0, WHAT 1, WHAT 2, WHAT 3, WHAT 4, WHAT 5, WHAT 6, WHAT 7, WHAT 8, WHAT 9, WHAT0, WHAT1, WHAT2, WHAT3, WHAT4, WHAT5, WHAT6, WHAT7, WHAT8, WHAT9, WHA0, WHA1, WHA2, WHA3, WHA4, WHA5, WHA6, WHA7, WHA8, WHA9, WH0, WH1, WH2, WH3, WH4, WH5, WH6, WH7, WH8, WH9, W0, W1, W2, W3, W4, W5, W6, W7, W8, W9
Tabla de clasificación
fuente
INVALID0INVALID1INVALID2
) un formato de salida válido?Respuestas:
Jalea , 7 bytes
Pruébalo en línea!
Cómo funciona
fuente
05AB1E ,
108 bytesExplicación
Pruébalo en línea!
Guardado 2 bytes gracias a Adnan
fuente
.p
es equivalente aŒ¹g£
:).Javascript (ES6),
5347 bytesGuardado 6 bytes gracias a Peanut & Neil
Salida: todas las palabras como una sola cadena sin separador.
Ejemplo
fuente
s&&
lugar des?
...:''
?+''
parte del último código que publiqué. Pruébalo aquí!Perl, 29 bytes
Incluye +1 para
-n
Ejecutar con entrada en STDIN:
Solo el código:
fuente
^
embargo, no entiendo eso último ... Parece que hace el mismo trabajo que(*FAIL)
, pero no veo por qué. ¿Podrías explicar?^
hace que la coincidencia falle, lo que obliga a la expresión regular anterior a retroceder^
... Quiero decir con su ejemplo, ¿por qué,/
no funciona, pero^/
sí?^
está más allá de la comprensión actual del optimizador. Cualquiera de los dos comportamientos puede cambiar en el futuro ..Haskell,
4743 bytesEjemplo de uso:
f "IN"
->["IN0","IN1","IN2","IN3","IN4","IN5","IN6","IN7","IN8","IN9","I0","I1","I2","I3","I4","I5","I6","I7","I8","I9"]
.Enfoque recursivo simple. Agregue cada dígito a la palabra y agregue una llamada recursiva con la última letra eliminada.
fuente
Pyth, 9 bytes
Un programa que toma la entrada de una cadena entre comillas en STDIN e imprime una lista de cadenas.
Pruébalo en línea
Cómo funciona
fuente
Pip ,
1211 bytesToma la palabra como argumento cmdline. Salidas sin separadores.
Pruébalo en línea!
Explicación:
fuente
V , 20 bytes
Pruébalo en línea!
Como esto contiene caracteres no imprimibles, aquí está el formato legible:
Y aquí hay un hexdump:
Explicación:
fuente
Bash + coreutils, 54 bytes:
Simplemente recorre una secuencia
[Length of Input,1]
y durante cada iteración, envía la palabra de entrada a la longitud del valor de iteración actual9
multiplicado por cada número[0,9]
adjunto a cada una de las9
copias de la palabra. Ejecútelo dentro de un archivo y la palabra o palabras entre comillas, es decirbash A.sh "blah blah blah"
.fuente
Floroid -
50 4731 bytesActualmente usa un método similar al que @JonathanAllan usa en su segundo método recursivo.
Podría haber sido esto si yo hubiera aplicado el producto cartesiano con más cuidado en el lenguaje:
Bc:ca([c]+[c[:-a-1]KaIw(Z(c)-1)],hd)
.Casos de prueba
fuente
(lambdabot) Haskell - 49 bytes
Lambdabot es un bot de IRC en #haskell; importa automáticamente un montón de módulos, incluido
Data.List
cuál es el lugar dondeinits
vive. Y debido a que un idioma se define por su implementación, puedo llamar a este lambdabot haskell y no pagar los bytes por las importaciones.Haskell regular:
fuente
tails
funciona?INVALID, NVALID, VALID, ALID, LID, ID, D,
braingasm ,
34333128 bytesEn su estado actual, el braingasm es un glorificado brainfuck con unos pocos ( características adicionales ( ¿3? ). He pasado la mayor parte del tiempo de desarrollo haciéndolo lo más "emprendedor" posible, en lugar de agregar funciones ...
De todos modos, el siguiente código debería funcionar con la última instantánea de desarrollo. Se necesita una entrada sin línea nueva desde stdin, like
$ echo -n INVALID | braingasm invalid.bg
e imprime en stdout.Explicación:
editar: aparentemente está bien
omitir eluso de cadenas vacías como delimitadorfuente
Python 2,
5355 bytes+2 bytes: declarar f es necesario con recursividad (como lo señaló @Destructible Watermelon)
Recurre a la cadena vacía (produciendo una lista vacía), corta un carácter a la vez y antepone una lista de diez de la cadena actual con los dígitos 0-9 añadidos a cada uno.
Prueba de ideona
Python 3,
5456 bytesPrueba de ideona
fuente
f=
parte (un poco como no puede asumir que las variables tienen valores)Swift 3, 150 bytes
No es la solución más corta, pero no es terrible para Swift
Pruebe esto en línea en el IBM Swift Sandbox
Sin golf
fuente
Rubí, 51
No se utiliza separador.
Agregue lo siguiente
i%10
para los separadores:,$/
para nueva línea,,?|
para|
(similar a cualquier carácter imprimible),,' '
para espacio.En programa de prueba
fuente
PHP,
6456 bytesfuente
Haskell,
4946 bytesfuente
f=(>>=(
mapa['0'..'9']).snoc).tail.reverse.inits
. 3 utilizando fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
reverse.tail.inits
lugar detail.reverse.inits
obtener también la salida correcta;)tail
, supongo que quise decirinit
, pero cambiarlo por reversa funciona bien :-)C #,
107102 bytesSin golf
fuente
k++
el bucle for y agregando++
después del uso dek
, de esta manera:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k+++",";i=i.Remove(i.Length-1);}return o;}
Además, el desafío de OP no requiere las comas, aunque, si lo prefiere, puede conservarlas. Sin esto es:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k++;i=i.Remove(i.Length-1);}return o;}
Ruby,
9085 bytesSi la cadena está vacía, devuelve una matriz vacía. De lo contrario, genere la cadena + el número en cada número del 0 al 9, y llame
f
con la cadena sin el último carácter.Guardado 5 bytes gracias a @LevelRiverSt
fuente
def
yend
. Puede hacer una lambda para que ni siquiera tenga que darle un nombre, siempre y cuando asigne una variable y la llame con los argumentos entre corchetes.f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
es 5 bytes más corto.->
sintaxisf=->s{s==""&&(return[]);(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
guarda otros 4 bytes. Ruby evalúa expresiones booleanas de izquierda a derecha y no evalúa términos posteriores a menos que sea necesario para determinar el resultado. La misma técnica de golf se puede usar en C. No sé por qué se requieren los()
alrededoresreturn[]
en este caso.Perl 6, 32 = 31 bytes + 1 para -p
No soy tan competente con Perl 6, por lo que puede haber formas de reducirlo aún más.
Se utiliza
-p
para evaluar una vez para cada línea de entrada. La línea se coloca$_
y, una vez que se ejecuta el programa, se imprime$_
.La
(~$_,*.chop...^!*)
es una lista donde se ingresa el primer elemento stringified (~
), cada elemento subsiguiente se obtiene cortando el último carácter del anterior (*.chop
) y eso continúa hasta que la cadena está vacía (!*
), excluyendo el caso de cadena vacía (^
in...^
) .X~
genera todos los pares de las listas a la izquierda y a la derecha, utilizando la operación especificada, en este caso, la concatenación de cadenas (~
) en ellas.^10
es una lista de 0, 1, ... 9.Finalmente, la lista se vuelve a encadenar con
~
, dando las palabras requeridas con espacio como separador.fuente
PowerShell v2 +, 60 bytes
Recorre desde la longitud de la cadena de entrada hasta
1
. En cada iteración, establezca un ayudante$i
igual al número actual menos1
. Esto es necesario porque.length
es el número total de caracteres, pero indexar una cadena se basa en 0. Luego, pasamos de0
a9
. Cada bucle interno, corta la cadena de entrada en$n
función del valor de nuestro bucle externo,-join
vuelve a formar una cadena y concatena la cadena en el recuento del bucle interno. Cada resultado de bucle individual se coloca en la tubería y la salida está implícita al finalizar el programa.fuente
Dyalog APL ,
1411 bytesDevuelve la lista de cadenas.
,
listify (hacer tabla en lista)⎕D
todos los dígitos∘.,⍨
agregado a todos (es decir, haciendo todas las combinaciones con)⌽
la lista invertida de,\
la concatenación acumulativa de⍞
la entrada de textoTryAPL en línea!
fuente
Groovy (58 bytes)
No tengo idea de por qué me molesto en publicar una respuesta Groovy ... El tamaño mínimo requerido para un golf Groovy es 2 basado en la necesidad de un cierre, por lo que la mejor respuesta aquí es el doble de mi tamaño mínimo.
Pruébelo aquí: https://groovyconsole.appspot.com/script/5148433803378688
fuente
Lote,
8583 bytesfuente
Java 7,
10598 bytes-7 bytes gracias a @Poke .
Sin golf :
Código de prueba:
Pruébalo aquí
Salida:
fuente
void c(String s){for(int x=0,l=s.length();x<l*10;)System.out.print(s.substring(0,l-x/10)+x++%10);}
Python 3, 62 bytes
No usa la recursividad como la otra respuesta.
La razón por la que ""
x+" "
está ahí es: -0 sigue siendo cero, por lo que no podemos usar la notación menos para obtener toda la cadena de esta manera, de modo que lo más alto que podamos llegar sea menos uno, por lo que "" es rellenar la cuerda,fuente
C,
72, 70 bytesToma cadenas como pares de puntero / tamaño. Prueba principal:
fuente
Retina , 37 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Explicación
Obtenga todos los prefijos de la entrada haciendo coincidir e imprimiendo todas las coincidencias superpuestas desde la derecha.
Agrega a
0
a cada línea.El
{
indica que las tres etapas restantes se ejecutan en un bucle hasta que no pueden cambiar la cadena. El%
dice que deben aplicarse a cada línea por separado.La etapa misma simplemente duplica la última línea (inicialmente esta es solo la línea en la que se ejecuta, pero cada iteración de las tres etapas agrega otra línea).
Incremente el dígito en la última fila realizando la siguiente sustitución de caracteres:
Y finalmente:
Mantenga solo las primeras 10 líneas, para que eliminemos la línea que acabamos de agregar después
INPUT9
.fuente
Scala,
7370 bytesLlámalo como
f("INVALID")
. Devuelve una secuencia de caracteres.Explicación
Solución alternativa, 73 bytes.
define una función anónima Para llamarlo, escribe
y llamarlo así
Devuelve una secuencia de cadenas, que se verá así cuando se imprima:
Explicación
fuente
CJam,
2928 bytesExplicación:
Pruébalo en línea
fuente