A mina de sal polonesa mais antiga , localizada em Bochnia *, foi iniciada no ano de 1248, o que podemos considerar um número mágico . Podemos ver que é igual a 4 dígitos da seqüência de exponenciações: .
Como a data é na verdade 4 dígitos da sequência, poderíamos torná-la mais longa. Poderíamos repetir o processo até alcançarmos o infinito. A sequência ficaria assim, se a limitarmos ao número2048
124816326412825651210242048
Para torná-lo um pouco melhor, podemos separar os números:
1|2|4|8|16|32|64|128|256|512|1024|2048
Vamos tentar uma sequência mais longa e personalizada que a data. Digamos que queremos que ele tenha 5 dígitos - há mais de uma possibilidade:
24816
81632
64128
Ou 3 dígitos:
124
248
816
Também podemos adicionar os números de três dígitos, mas digamos que uma sequência deve ter pelo menos dois números .
* Não há informações sobre isso na Wikipedia em inglês. Se você digitar a versão polonesa - então existe. Se você visitar a mina, os trabalhadores também lhe dirão que tudo começou em 1248.
O desafio
Crie uma sequência de exponenciação como nos exemplos acima, com 2 como base.
Dado um número do intervalo 2-27, imprima todas as partes possíveis da sequência (a 2048, uma ou mais, se desejar) com uma quantidade de dígitos igual à entrada. Você não pode cortar um número, portanto, a saída 481
é inválida, porque 16 é cortado pela metade.
Regras:
- As brechas padrão são proibidas.
- Você pode assumir que a entrada é um número dentro do intervalo.
- Seu programa pode aceitar entradas maiores que o intervalo (28+), mas isso não aumenta / diminui a pontuação.
- Os espaços na saída são ignorados. Você pode imprimir como
124
ou gostar4 8 16
. - Possibilidades diferentes devem ser separadas por qualquer caractere da lista:
,./|
ou um avanço de linha. - Você pode imprimir como uma matriz.
- Toda possibilidade deve incluir pelo menos 2 números diferentes .
- Você deve saída de uma parte da seqüência, você não pode misturar números que não são próximas umas das outras, como:
14
. - A saída codificada permanentemente não é permitida, no entanto, você pode codificar uma sequência / número / matriz que contém a sequência completa.
- A entrada 27 deve retornar a sequência 2048 completa.
- Como já mencionado anteriormente, não corte números . Ex.
16
deve ficar16
- você não pode usar481
- você deve usar4816
. - Edição: Eu poderia ter dito algo errado lá; 2048 é o último número que seu programa deve suportar; você pode adicionar suporte para int maiores.
Casos de teste
Entrada: 2
12, 24, 48
Entrada: 3
124, 248, 816
Entrada: 4
1248, 4816, 1632, 3264
Entrada: 5
24816, 81632, 64128
Entrada: 27
124816326412825651210242048
E números posteriores ...
Se eu cometi algum erro em algum dos casos de teste, diga-me ou edite a pergunta.
Isso é código-golfe , então o código mais curto em bytes vence!
fonte
Respostas:
05AB1E ,
121110 bytesSuporta a sequência até
2^95 = 39614081257132168796771975168
Experimente online!
Explicação
Guardou 1 byte graças a Erik the Outgolfer Guardou
1 byte graças a Riley
fonte
X›
pode ser≠
Y₃Ým
ser₃Ýo
?Pitão,
22212017 bytesExperimente Online
Explicação
fonte
fqQlTmjkdftlT.:m^2d12
fqQlTjLkftlT.:m^2d12
Geléia ,
19 1816 bytesPode haver uma solução mais curta agora que podemos usar qualquer corte (não apenas 2048), embora essa alteração na especificação tenha permitido economizar um byte nessa implementação, passando para um corte de 32768. -
sim. ..
-2 bytes graças a Erik the Outgolfer (uso de
V
para permitir argumentos implícitos e corretos do filtro e aperto) -sim, é muito semelhante ao ineficiente agora; Voto a favor !
Um link monádico que pega um número e retorna uma lista de números.
Experimente online!
Quão?
fonte
V
e ele vai trabalhar para 16 em vez de 1000:⁴Ḷ2*Ẇṫ17VDL$⁼¥Ðf
.Perl 6 ,
6259 bytesExperimente online!
fonte
Japt ,
22201916 bytesSuporta entrada até,
639
mas as lacunas começam a aparecer na sequência após234
(Veja a lista completa dos intervalos de entrada suportados aqui ). Produz uma matriz de seqüências de caracteres.Teste-o
I
(64) poderia ser substituído porL
(100), mas estaríamos entrando em notação científica e imprecisões de precisão. A filtragem desses recursos aumentaria obviamente a contagem de bytes e aumentaria apenas a entrada máxima para736
.fonte
Python 2 , 105 bytes
Experimente online!
fonte
Casca ,
1817 bytesA saída é separada por novas linhas
Experimente online!
Quão?
fonte
Gelatina , 16 bytes
Experimente online!
Nota: muito ineficiente. Retorna uma lista de números.
fonte
ȷ
s (ie1000
) por20
s (limite superior inferior) .[12, 24, 48]
.JavaScript (ES7),
102100 bytesImprime todas as sub sequências correspondentes com
alert()
.Demo
Nota : este fragmento está armazenando em buffer os resultados e imprimindo-os no console para facilitar a utilização.
Mostrar snippet de código
fonte
Haskell ,
7267 bytesExperimente online!
Guardado 5 bytes graças a Laikoni
Eu usei um limite de
99
porque2^99
tem um comprimento> 27
.fonte
length$(show$2^44)++(show$2^45)==28
.Mathematica, 122 bytes
Entrada
Resultado
fonte
C, 170 bytes
Experimente online!
Desenrolado:
fonte
R , 99 bytes
Experimente online!
fonte
Perl 5 , 76 bytes
75 bytes de código + 1 para
-a
Experimente online!
fonte
Japt, 24 bytes
Depois de muito tempo desde que postei essa pergunta, aprendi minha primeira língua no golfe. Por isso, decidi tentar a sorte aqui.
Experimente online!
A pontuação não é a melhor, nem sequer é boa, mas levei muito tempo para fazer isso .-.
Eu perco muitas pontuações, porque, por algumas razões, ã pode retornar apenas matrizes de comprimento x ... Pode ser até ~ 10 bytes, se não for isso.
Explicação:
fonte
Ruby , 94 bytes
Experimente online!
fonte