Aquí hay una secuencia razonablemente trivial que no está en la Enciclopedia en línea de secuencias enteras .
Comience con una secuencia vacía y luego defina cada término como la cantidad de caracteres necesarios para escribir, en inglés, todos los dígitos de la secuencia hasta ahora sin espacios. *
Como referencia, el número de caracteres de todos los dígitos (base diez) en inglés son:
zero one two three four five six seven eight nine
4 3 3 5 4 4 3 5 5 4
(Que es el comienzo de A52360 y A5589 ).
Esto hace que la primera entrada ya que hay cero dígitos presentes en la secuencia vacía.
Esto hace que la segunda entrada sea ya que se necesitan cuatro caracteres para escribir "cero", el único dígito presente hasta ahora.
Esto hace que la tercera entrada sea ya que se necesitan cuatro caracteres más para escribir los "cuatro" para un total de ocho para escribir "zerofour".
Esto hace que la cuarta entrada sea ya que se necesitan cinco caracteres más para escribir "ocho" para un total de trece para escribir "zerofoureight".
Esto hace que la quinta entrada sea ya que se necesitan ocho caracteres más para escribir "onethree" para un total de veintiuno para escribir "zerofoureightonethree".
...y así. Aquí están las primeras 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
* Podríamos definirlo para otros idiomas y / u otras bases o con espacios, por supuesto.
El reto
Dada salida, en la menor cantidad de bytes de código posible, cualquiera de:
- Los primeros términos de la secuencia (deberían funcionar para enteros no negativos)
- El valor de (debería funcionar para enteros no negativos)
- El º término de la secuencia (debería funcionar para números enteros positivos - es decir, valor de un ( n - 1 ) )
Este es el código de golf, por lo que la respuesta más corta en bytes gana para cada idioma, y la respuesta más corta en bytes gana. ¡No permita que los idiomas de golf le impidan ingresar a su idioma favorito, ya sea práctico o esotérico!
fuente
1
debería generar[0]
y0
debería generar[]
o 2)0
debería generar[0]
(como en mi respuesta anterior)?Respuestas:
Perl 6 , 45 bytes
Pruébalo en línea!
¡No es necesario realizar una modulación elegante cuando puede obtener el nombre del dígito directamente! Bloque de código anónimo que devuelve el enésimo valor de la secuencia, o puede pasar en un rango para obtener una lista de valores
Explicación:
fuente
»
es un byte, ¿verdad? Además,[+]
podría ser más lindo e insinuar cómo las operaciones binarias pueden convertirse en reductores, perosum
también es de tres bytes y, de acuerdo con el resto de la solución, que podría no ser la más corta pero segura, es la forma más elegante de golf.»
tiene dos bytes, por lo que es intercambiable.say '»'.encode('latin1').bytes
muestra1
. :)JavaScript (ES6),
69686158 bytesDevuelvea ( n ) .
Pruébalo en línea!
¿Cómo?
Un dígitore se convierte en un número norte de letras con:
Debido a que el número se divide en caracteres de dígitos, podemos procesarre× 100 + 10 simplemente agregando 10 (como una concatenación de cadenas).
fuente
Stax ,
1413 bytesEjecutar y depurarlo
La idea clave aquí es que el dígito
d
requiere((4 - 2 * d) // 3) % 3 + 3
letras para deletrear. (Esa es la división de enteros de Python y el módulo no negativo de estilo Python)fuente
Pip , 21 bytes
Explicación
fuente
large constant to the power of pi
y me impresionó monumentalmente. (Sigue siendo impresionante, pero mi interpretación inicial fue ... más)Wolfram Language (Mathematica) , 57 bytes
Pruébalo en línea!
Tr@StringLength@IntegerName@IntegerDigits@#&
enumera los dígitos de#
, convierte cada uno de ellos en un nombre en inglés, cuenta la longitud y suma los resultados. Muchas cosas pasan por las listas, es muy emocionante. Luego solo aplicamos iterativamente la definición.TIO se queja de que no tiene conexión a Internet, pero no estoy seguro de por qué, porque de todos modos descubre la respuesta correcta. ¿Quizás está buscando actualizaciones para los nombres de los enteros?
Nest
NestList
fuente
Limpio , 82 bytes
Pruébalo en línea!
fuente
05AB1E ,
1514 bytesPruébalo en línea!
Explicación
fuente
APL (Dyalog Unicode) ,
2928 bytesPruébalo en línea!
Gracias a los muchachos @The APL Orchard por ayudar con este:
@ngn para 2 bytes; @ H.PWiz para
34 bytes.Ahora usando la fórmula de @ recursive.
Cómo:
fuente
Python 2 , 61 bytes
Pruébalo en línea!
Utiliza el mapeo recursivo de recuento de dígitos .
Python 2 , 63 bytes
Pruébalo en línea!
Una versión de función recursiva. Se tarda un tiempo exponencial en ejecutarse porque tiene dos llamadas recursivas a
f(n-1)
.fuente
+3
y lo limité a operadores aritméticos (no bit a bit) y números <= 4, encontré esta solución pero nada más corto o incluso la misma longitud, excepto equivalentes.Python 2 , 71 bytes
Pruébalo en línea!
fuente
f=lambda n,k=0:n and f(n-1,k+sum(632179420>>3*int(d)&7for d in`k`))or k
es el mismo recuento pero evita generar una lista adjunta.MathGolf , 17 bytes
Pruébalo en línea!
Esto usa el método de Arnauld . Emite el enésimo elemento de la secuencia. Si la cadena vacía está bien
a(0)
, entonces podríamos eliminar el0\
al principio.Explicación:
fuente
Pyth , 21 bytes
Pruébelo en línea aquí .
fuente
muy probablemente no sea un solo byte en la página de códigos de Pyth. (Creo que usa UTF-8, en cuyo caso es de 3 bytes yj7163 3
tiene la misma longitud; pero tio.run dice que Pyth tiene un SBCS. ¡Misterioso!)Ruby , 54 bytes
Pruébalo en línea!
fuente
Java (JDK) , 95 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 82 bytes
Pruébalo en línea!
fuente
Jalea , 13 bytes
Pruébalo en línea!
0 indexado.
Programa completo; toma entrada de STDIN.
fuente
Rojo ,
9995 bytesPruébalo en línea!
Solo una solución sencilla.
fuente
J , 37 bytes
Pruébalo en línea!
Utiliza el método de Arnauld
Explicación:
El argumento es
n
fuente
Editado después del primer comentario.
Imprime todos los términos
Scala, 76 bytes
Pruébalo en línea!
Impresiones n th término
Scala, 72 bytes
Scala, 69 bytes
Scala, 67 bytes
Scala, 67 bytes
Pruébalo en línea!
fuente
n
está definido). Si conoces Scala, probablemente sea fácil de arreglar. También tenga en cuenta que hay consejos para jugar al golf en la pregunta Scala que pueden ayudar. Por último, es bueno publicar un enlace a un intérprete en línea, TIO tiene Scala y es utilizado por muchos miembros de PPCG.