Aqui está uma sequência razoavelmente trivial que não está na Enciclopédia Online de Sequências Inteiras .
Comece com uma sequência vazia e defina cada termo como o número de caracteres necessários para escrever, em inglês, todos os dígitos da sequência até agora sem espaços. *
Para referência, o número de caracteres de todos os dígitos (base dez) em inglês é:
zero one two three four five six seven eight nine
4 3 3 5 4 4 3 5 5 4
(Que é o início do A52360 e do A5589 .)
Isso torna a primeira entrada uma vez que existem zero dígitos presentes na sequência vazia.
Isso torna a segunda entrada pois são necessários quatro caracteres para escrever "zero", o único dígito presente até o momento.
Isso torna a terceira entrada pois são necessários mais quatro caracteres para escrever o "quatro", para um total de oito escrever "zerofour".
Isso torna a quarta entrada pois são necessários mais cinco caracteres para escrever "oito" e um total de treze para escrever "zerofoureight".
Isso faz com que a quinta entrada seja pois são necessários mais oito caracteres para escrever "onethree", para um total de vinte e um para escrever "zerofoureightonethree".
...e assim por diante. Aqui estão as primeiras 100 entradas:
0, 4, 8, 13, 21, 27, 35, 44, 52, 59, 67, 75, 84, 93, 102, 112, 121, 130, 142, 152, 162, 171, 182, 193, 205, 216, 225, 235, 247, 259, 270, 282, 293, 305, 318, 331, 344, 357, 371, 384, 398, 412, 422, 432, 444, 456, 467, 479, 492, 503, 516, 526, 536, 548, 561, 571, 583, 597, 610, 620, 630, 642, 652, 662, 671, 682, 693, 705, 718, 731, 744, 757, 771, 784, 798, 812, 823, 836, 849, 862, 873, 888, 903, 916, 926, 936, 948, 961, 971, 983, 997, 1010, 1024, 1038, 1055, 1070, 1086, 1101, 1114, 1127
* Poderíamos defini-lo para outras línguas e / ou outras bases ou com espaços, é claro
O desafio
Dada a saída , com o menor número possível de bytes de código, qualquer um dos seguintes:
- Os primeiros termos da sequência (devem funcionar para números inteiros não negativos)
- O valor de (deve funcionar para números inteiros não negativos)
- O th termo da sequência (deve funcionar para inteiros positivos - ou seja, o valor de )a ( n - 1 )
Isso é código-golfe, e a resposta mais curta em bytes vence para cada idioma, e a resposta mais curta em bytes vence. Não deixe que os idiomas do golfe o impeçam de entrar no seu idioma favorito, seja ele prático ou esotérico!
fonte
1
deve produzir[0]
e0
deve produzir[]
ou 2)0
deve produzir[0]
(como na minha resposta anterior)?Respostas:
Perl 6 , 45 bytes
Experimente online!
Não há necessidade de modulação sofisticada quando você pode obter o nome do dígito diretamente! Bloco de código anônimo que retorna o enésimo valor da sequência ou você pode passar um intervalo para obter uma lista de valores
Explicação:
fonte
»
é um byte, certo? Além disso,[+]
pode ser mais bonito e sugerir como as operações binárias podem se tornar redutoras, massum
também tem três bytes e está de acordo com o restante da solução, que pode não ser a mais curta, mas com certeza é a mais elegante do golfe.»
tem dois bytes, portanto é intercambiável.say '»'.encode('latin1').bytes
exibido1
. :)JavaScript (ES6),
69686158 bytesRetornaa ( n ) .
Experimente online!
Quão?
Um dígitod é convertido em um número n de letras com:
Como o número é dividido em caracteres de dígito, podemos processar adicionando apenas (como uma concatenação de string).d× 100 + 10 10
fonte
Stax ,
1413 bytesExecute e depure
O principal insight aqui é que o dígito
d
exige que as((4 - 2 * d) // 3) % 3 + 3
letras sejam digitadas. (Isso é divisão inteira python e módulo não negativo no estilo python)fonte
Pip , 21 bytes
Explicação
fonte
large constant to the power of pi
e fiquei monumentalmente impressionado. (Ainda é impressionante, mas a minha interpretação inicial era apenas mais ..)Wolfram Language (Mathematica) , 57 bytes
Experimente online!
Tr@StringLength@IntegerName@IntegerDigits@#&
lista os dígitos de#
, converte cada um deles em um nome em inglês, conta o comprimento e soma os resultados. Muitas coisas enfileiram listas, é muito emocionante. Em seguida, aplicamos iterativamente a definição.O TIO reclama que não tem uma conexão com a Internet, mas não sei por que, porque descobre a resposta certa de qualquer maneira. Talvez esteja procurando atualizações nos nomes dos números inteiros?
Nest
NestList
fonte
Limpo , 82 bytes
Experimente online!
fonte
05AB1E ,
1514 bytesExperimente online!
Explicação
fonte
APL (Dyalog Unicode) ,
2928 bytesExperimente online!
Obrigado aos caras do @ The APL Orchard por ajudarem com este:
@ngn por 2 bytes; @ H.PWiz por
34 bytes.Agora, usando a fórmula do @ recursive.
Quão:
fonte
Python 2 , 61 bytes
Experimente online!
Usa o mapeamento de contagem de dígitos recursivos .
Python 2 , 63 bytes
Experimente online!
Uma versão de função recursiva. Leva um tempo exponencial para ser executado porque há duas chamadas recursivas para
f(n-1)
.fonte
+3
e o limitei a operadores aritméticos (sem bit a bit) e números <= 4, encontrei essa solução, mas nada mais curto ou mesmo o mesmo comprimento, exceto os equivalentes.Python 2 , 71 bytes
Experimente online!
fonte
f=lambda n,k=0:n and f(n-1,k+sum(632179420>>3*int(d)&7for d in`k`))or k
é a mesma contagem, mas evita a saída de uma lista anexa.MathGolf , 17 bytes
Experimente online!
Isso usa o método de Arnauld . Gera o enésimo elemento da sequência. Se a string vazia estiver correta
a(0)
, poderíamos removê-la0\
no início.Explicação:
fonte
Pitão , 21 bytes
Experimente online aqui .
fonte
muito provavelmente não é um único byte na página de códigos de Pyth. (Eu acho que ele usa UTF-8, caso em que é 3 bytes, ej7163 3
tem o mesmo comprimento, mas tio.run diz Pyth tem um SBCS Misterioso.!)Ruby , 54 bytes
Experimente online!
fonte
Java (JDK) , 95 bytes
Experimente online!
fonte
JavaScript (Node.js) , 82 bytes
Experimente online!
fonte
Gelatina , 13 bytes
Experimente online!
Indexado a 0.
Programa completo; recebe entrada de STDIN.
fonte
Vermelho ,
9995 bytesExperimente online!
Apenas uma solução direta.
fonte
J , 37 bytes
Experimente online!
Usa o método de Arnauld
Explicação:
O argumento é
n
fonte
Editado após o 1º comentário.
Imprime todos os termos
Scala, 76 bytes
Experimente online!
Imprime o enésimo termo
Scala, 72 bytes
Scala, 69 bytes
Scala, 67 bytes
Scala, 67 bytes
Experimente online!
fonte
n
definido). Se você conhece o Scala, provavelmente é fácil de corrigir. Observe também que há dicas para jogar golfe na questão Scala, que podem ajudar. Por fim, é bom postar um link para um intérprete on-line, o TIO possui o Scala e é usado por muitos membros do PPCG.