A tarefa é gerar todas as seqüências de caracteres de 'a' a '999', incluindo caracteres em maiúsculas como:
'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'
e assim por diante (preenchendo as lacunas), começando opcionalmente pela sequência vazia.
Entrada:
- A quantidade de caracteres consecutivos que o programa precisa imprimir.
Saída:
- Uma matriz contendo cada sequência OU uma sequência por linha
Esclarecimentos:
O pedido não importa, você pode imprimir letras maiúsculas ou minúsculas primeiro, se desejar.
A saída pode retornar qualquer tipo de enumerável, não precisa ser uma matriz específica, embora eu duvide que imprimir todas as combinações não seja o caminho mais fácil.
Uma entrada de
3
imprimiria toda a sequência de'a'
(ou''
) para'999'
, uma entrada de5
até'99999'
e assim por diante.
code-golf
string
number
array-manipulation
Simon Landry
fonte
fonte
a = (function return)
.a
para9999
, para 5 éa
para99999
e assim por diante.Respostas:
Geléia , 7 bytes
Este é um link monádico que aceita um número inteiro como entrada e retorna uma matriz de seqüências de caracteres.
Experimente online!
Como funciona
fonte
Haskell, 65 bytes
Exemplo de uso:
k 3
->["a","b","c",....,"997","998","999"]
.Como funciona
fonte
Python, 86 bytes
Produz uma lista de cadeias não vazias. Anexa recursivamente cada caractere alfanumérico a cada saída
n-1
e sequência vazia.fonte
JavaScript (Firefox 30-57), 108 bytes
Salva 3 bytes usando toUpperCase. A computação dos 62 caracteres leva 10 bytes extras.
fonte
f=
o começo. (Eu sempre esqueço de fazer isso por respostas recursiva.)f=
, quaisquer problemas adicionais se devem à maneira como você está tentando chamá-lo.Goma de canela, 15 bytes
Não é curto o suficiente, apesar de este ser o tipo exato de desafio que o Cinnamon Gum foi feito para :(
Comprimido convertendo da base bijetiva 96 para a base 256. Experimente online. Entradas maiores que 2 causarão problemas no TIO.
Explicação
Isso descompacta para a regex
[a-zA-Z0-9]{1,%s}
. Oh
modo substitui a entrada%s
e gera todas as seqüências correspondentes ao regex.fonte
Ruby, 82 bytes
Constrói produtos cartesianos do caractere configurado para o comprimento especificado. O conjunto de caracteres é gerada por agarrando todos os caracteres entre
0
ez
e filtrar caracteres não-palavra e também_
.fonte
05AB1E ,
98 bytesCódigo:
Explicação:
Usa a codificação CP-1252 . Experimente online! .
fonte
Python 2.7,
136134 bytesAgradecimentos a Maltysen e NonlinearFruit por salvar 2 bytes
Pega
ascii_letters
edigits
no módulo string e usa o produto cartesiano a partirproduct
de itertools para calcular todas as combinações.Saída
fonte
i in range(n)
comrepeat=i+1
range
função?Pitão -
1312 bytes1 bytes salvos graças ao @Jakube.
Experimente online aqui .
fonte
rBG1
salvar um byte sobre+GrG1
B
ifurcate funciona com argumentos? obrigado.Python 2,
10697 bytesExperimente em Ideone .
fonte
MATL , 12 bytes
Isso leva um número como entrada.
Experimente online!
Explicação
fonte
𝔼𝕊𝕄𝕚𝕟 , 21 chars / 27 bytes
Try it here (Firefox only).
Não. Não. Não.
Explicação
fonte
Perl, 113 bytes + espaço em branco
Use "perl -E" acima, com um argumento que é um número. Provavelmente eu poderia decentemente não ter contado o último "mapa diz" na contagem de caracteres.
fonte
J, 50 bytes
Metade dos bytes, 25 para ser exato, são gastos na geração das letras e dígitos necessários.
fonte
APL,
3837 bytesfonte
(⎕ucs 96+⍳26),⎕d
=>⎕d,⍨⎕ucs 96+⍳26
Utilitários Bash + GNU, 90
Entrada como um parâmetro de linha de comando. Saída é uma lista separada por espaços em branco.
Funciona para entradas upt e incluindo 3. Fique sem memória com 4 -
eval printf
leva um conjunto inteiro de 63 n elementos da expansão do bash.fonte
Utilitários Bash + GNU, 66
Abordagem diferente (e acho um pouco nova) para minha outra resposta :
dc
contagens para baixo a partir de 2 48 -1 a 2 48 -64 n eP
rints cada número resultante, tal como um fluxo de bytes (ou seja, de base 256). Se a entrada estiver entre 1 e 4, inclusive, é garantido que sejam exatamente 6 bytes por número.base64
converte isso em saída base64 e, portanto, 8 bytes por dígito base64, um por linha.sed
retira o início/
(dígito base64 63) e remove as linhas que contêm+
ou/
(dígitos 62 e 63 da base64). Isso deixa a sequência necessária.fonte
R , 73 bytes
y
começa como uma string vazia,x
como o caso base'a','b','c',...,'8','9'
.outer
pega cada um de seus argumentos de entrada e aplica a funçãopaste0
a cada combinação de elementosy
ex
que concatena as seqüências de caracteres.y
salva o resultado,cat
imprime e itera através do número STDIN de vezes.Experimente online!
fonte
Jq 1.5 , 97 bytes
Expandido
Experimente online!
fonte