La tarea es generar todas las cadenas de 'a' a '999', incluidos los caracteres en mayúscula de la siguiente manera:
'a', 'b', 'c' ... 'y', 'z', 'A', 'B', 'C' ... 'Y', 'Z', '0', '1', 2' ...
'8', '9', 'aa', 'ab', 'ac' ... 'az', 'aA', 'aB' ... 'aZ', 'a0' ... 'a9', 'ba'
y así sucesivamente (rellenando los espacios en blanco), opcionalmente comenzando con la cadena vacía.
Entrada:
- La cantidad de caracteres consecutivos que el programa tiene que imprimir hasta.
Salida:
- Una matriz que contiene cada cadena O una cadena por línea
Aclaraciones:
El orden no importa, puede imprimir letras mayúsculas o minúsculas primero si lo desea.
La salida puede devolver cualquier tipo de enumerable, no tiene que ser una matriz específicamente, aunque dudo que imprimir todas las combinaciones no sea la forma más fácil de hacerlo.
Una entrada de
3
imprimiría toda la cadena desde'a'
(o''
) hasta'999'
una entrada de5
hasta,'99999'
etc.
code-golf
string
number
array-manipulation
Simon Landry
fuente
fuente
a = (function return)
.a
a9999
, para 5 esa
a99999
, y así sucesivamente.Respuestas:
Jalea , 7 bytes
Este es un enlace monádico que acepta un número entero como entrada y devuelve una matriz de cadenas.
Pruébalo en línea!
Cómo funciona
fuente
Haskell, 65 bytes
Ejemplo de uso:
k 3
->["a","b","c",....,"997","998","999"]
.Cómo funciona
fuente
Python, 86 bytes
Emite una lista de cadenas no vacías. Precede recursivamente cada carácter alfanumérico a cada salida para una
n-1
cadena vacía.fuente
JavaScript (Firefox 30-57), 108 bytes
Guardado 3 bytes usando toUpperCase. Calcular los 62 caracteres me lleva 10 bytes adicionales.
fuente
f=
al principio. (Siempre me olvido de hacer eso por respuestas recursivas.)f=
, cualquier otro problema se debe a la forma en que intenta llamarlo.Chicle de canela, 15 bytes
No lo suficientemente corto, a pesar de que este es el tipo exacto de desafío para el que se hizo Cinnamon Gum :(
Comprimido al convertir de la base biyectiva 96 a la base 256. Pruébelo en línea. Las entradas mayores de 2 causarán problemas en TIO.
Explicación
Esto se descomprime a la expresión regular
[a-zA-Z0-9]{1,%s}
. Elh
modo luego sustituye la entrada en%s
y genera todas las cadenas que coinciden con la expresión regular.fuente
Ruby, 82 bytes
Construye productos cartesianos del personaje configurado a la longitud dada. El conjunto de caracteres se genera al capturar todos los caracteres entre
0
yz
y al filtrar los caracteres que no son palabras y también_
.fuente
05AB1E ,
98 bytesCódigo:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
Python 2.7,
136134bytesGracias a Maltysen y NonlinearFruit por guardar 2 bytes
Toma
ascii_letters
ydigits
del módulo de cadena y usa el producto cartesiano comoproduct
de itertools para calcular todas las combinaciones.Salida
fuente
i in range(n)
conrepeat=i+1
range
función?Pyth -
1312 bytes1 bytes guardados gracias a @Jakube.
Pruébelo en línea aquí .
fuente
rBG1
guardar un byte+GrG1
B
ifurcate funciona con argumentos? Gracias.Python 2,
10697 bytesPruébalo en Ideone .
fuente
MATL , 12 bytes
Esto toma un número como entrada.
Pruébalo en línea!
Explicación
fuente
𝔼𝕊𝕄𝕚𝕟 , 21 caracteres / 27 bytes
Try it here (Firefox only).
No No No
Explicación
fuente
Perl, 113 bytes + espacio en blanco
Use "perl -E" en lo anterior, con un argumento que es un número. Probablemente podría no haber contado decentemente el último "decir mapa" en el recuento de caracteres.
fuente
J, 50 bytes
La mitad de los bytes, 25 para ser exactos, se gastan generando las letras y dígitos necesarios.
fuente
APL,
3837 bytesfuente
(⎕ucs 96+⍳26),⎕d
=>⎕d,⍨⎕ucs 96+⍳26
Bash + utilidades GNU, 90
Entrada como parámetro de línea de comando. La salida es una lista separada por espacios en blanco.
Funciona para entradas upt e inclusive 3. Queda sin memoria con 4:
eval printf
toma un conjunto completo de 63 n elementos de la expansión bash.fuente
Bash + GNU utils, 66
Enfoque diferente (y creo que un poco novedoso) a mi otra respuesta :
dc
una cuenta atrás de 2 48 -1-2 48 -64 n yP
resuelve cada número resultante como bytestream (es decir, base 256). Si la entrada está entre 1 y 4 inclusive, se garantiza que sea exactamente 6 bytes por número.base64
convierte esto en salida base64 y, por lo tanto, 8 bytes por dígito base64, uno por línea.sed
despoja de líder/
(base64 dígitos 63), y luego elimina cualquier líneas que contienen+
o/
(base64 dígitos 62 y 63). Esto deja la secuencia requerida.fuente
R , 73 bytes
y
comienza como una cadena vacía,x
como el caso base'a','b','c',...,'8','9'
.outer
toma cada uno de sus argumentos de entrada y aplica la funciónpaste0
a cada combinación de elementos eny
yx
que concatena las cadenas.y
guarda el resultado, locat
imprime y repite el número de veces que STDIN lo hace.Pruébalo en línea!
fuente
Jq 1.5 , 97 bytes
Expandido
Pruébalo en línea!
fuente