Desafío:
Aquí tenemos los primeros 100 elementos de una secuencia:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
¿Cómo se forma esta secuencia? Primero tenemos el número en el rango [6, 1]
(todos los valores posibles de un solo dado de mayor a menor). Luego tenemos los números [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(todos los valores posibles de dos dados de mayor a menor). Etc.
Esto está relacionado con la secuencia OEIS A057436: contiene solo los dígitos del 1 al 6 , pero con todos los números con la misma cantidad de dígitos ordenados hacia atrás en la secuencia.
El desafío es elegir una de estas tres opciones para su función / programa con la secuencia anterior:
- Tome una entrada y la salida de la -ésimo valor de esta secuencia, en donde puede ser 0-indexada o 1-indexado.
- Tome una entrada y envíe los primeros valores o de esta secuencia.
- Salida de los valores de la secuencia indefinidamente.
Por supuesto, se puede usar cualquier formato de salida razonable. Podría ser como cadenas / enteros / decimales / etc .; podría ser como una lista (infinita) / array / stream / etc .; podría salir con espacio / coma / nueva línea / otro delimitador a STDOUT; etc. etc. ¡ Indique qué E / S y qué opción está utilizando en su respuesta!
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Aquí algunos casos de prueba más grandes si elige la opción 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Enésimo valor indexado.
fuente
Perl 6 ,
2423 bytes-1 byte gracias a nwellnhof
Pruébalo en línea!
Emite la secuencia infinitamente separada por espacios / líneas nuevas. O, para unos pocos bytes más, podemos tener una lista infinita perezosa en la que podemos indexar.
Perl 6 , 27 bytes
Pruébalo en línea!
Explicación:
fuente
Python 2 ,
393834 bytesPruébalo en línea!
Salidas 1 número indexado
fuente
R , 43 bytes
Pruébalo en línea!
Imprime la secuencia indefinidamente
fuente
6 5 4 3 2 166 65 64...
Bash, 31 bytes
TIO
actualización de los comentarios, el enésimo valor 1 indexado, + herramientas GNU + perl, 64 bytes, 7 bytes guardados gracias a @manatwork
64 bytes
fuente
bc<<<obase=6\;$1
. Pero si se cambia adc
, no hay nada que escape:dc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 bytes
Emite los valores indefinidamente.
Pruébalo en línea!
Explicación
fuente
Haskell,
3834 bytesUna lista infinita de números:
Pruébalo en línea!
Dos soluciones anteriores que dan listas infinitas de cadenas, cada una con 38 bytes:
Pruébalo en línea!
Pruébalo en línea!
fuente
replicate
suya.JavaScript (ES6), 26 bytes
Pruébalo en línea!
fuente
Haskell , 28 bytes
Pruébalo en línea!
Produce una lista infinita de números
l
. Usando<$>
y<*>
corta un byte:29 bytes
Pruébalo en línea!
El enfoque es similar a la cadena de entrada fija de respuesta de Haskell Output All String "654321", y omite la salida de cadena vacía cambiando dónde está antepuesta.
30 bytes
Pruébalo en línea!
fuente
0
(o""
), pero no encontré una forma barata de no tenerlo en el resultado ...05AB1E , 10 bytes
Emite la secuencia indefinidamente.
Pruébalo en línea!
Explicación
fuente
¸
al principio crea una lista que contiene una cadena vacía. Y 2 bytes menos que la solución que usé para generar los casos de prueba, por lo que, por supuesto, un +1 de mi parte. :)Perl 5,
4037 bytes-3bytes gracias a @Xcali
37 bytes
40 bytes
fuente
Java (JDK) , 48 bytes
Pruébalo en línea!
Esto devuelve el 1-indexadas n º elemento.
La recursión parece vencer a la lambda iterativa.
Versión iterativa, 49 bytes.
Pruébalo en línea!
fuente
Brachylog ,
1311 bytesGracias a Fatalize por 2 bytes
Salidas indefinidamente. Pruébalo en línea!
Explicación
fuente
6~d{⟧₁∋}ᵐẉ⊥
. Básicamente, finaliza su programa con "falso" que lo obligará a imprimir todas las soluciones.C # (.NET Core) , 38 bytes
Pruébalo en línea!
Emite el enésimo valor (basado en 1).
fuente
Japt, 14 bytes
Debe haber una solución más corta utilizando métodos de función y / o producto cartesiano, pero (¿por ahora?) Lo mejor que puedo administrar es un puerto de la solución JS de Arnauld, así que asegúrese de votarlo también.
Pruébalo o prueba los términos
0-1000
fuente
Wolfram Language (Mathematica) ,
8878 bytesPruébalo en línea!
ahorrado 4 + 6 bytes gracias a @IanMiller
La lista es 1 indexada, genera el enésimo número.
fuente
Mathematica, 56 bytes
fuente
Pip
-l
, 16 bytesEmite la secuencia indefinidamente. Pruébalo en línea!
Explicación
La
-l
bandera significa que las listas se imprimen con cada elemento en su propia línea; Si un elemento es en sí mismo una lista, sus elementos se concatenan sin separador. Por ejemplo, la lista[1 [2 3] [4 [5 6]]]
se imprimirá comoCon eso aclarado:
Después de la primera iteración del bucle, se
x
ve así[[6;6];[6;5];[6;4];...;[1;1]]
; después de la segunda iteración[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
; y así. No debemos preocuparnos por aplanar las sublistas, porque-l
efectivamente lo hace por nosotros.fuente
Carbón , 18 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. 1 indexado. Explicación:
Entrada
n
Repita hasta que
n
sea cero.Reduzca el
-n
módulo6
, luego incremente el resultado y la salida de derecha a izquierda.Decremento
n
y número entero lo dividen entre6
.fuente
Retina 0.8.2 , 36 bytes
Pruébalo en línea! El enlace incluye casos de prueba. 1 indexado. Explicación:
Convierte a unario. (Retina 1 ahorraría 2 bytes aquí).
Convertir a base biyectiva 6 mediante divmod repetido. Tenga en cuenta que el uso de
+
significa que el dígito extraído siempre es un número de 1 a 6 en lugar de 0 a 5 para la conversión regular de base 6. ((_{6})*
es más rápido pero cuesta bytes extraer el cociente).Transponga los dígitos para que los 6 sean los primeros y los 1 los últimos. (No hay 7 ni 0, pero esto me permite usar el
d
acceso directo.fuente
Cubix , 22 bytes
Esto generará la secuencia indefinidamente. La idea general es que tiene un número base al que se agrega 6 - 1. Para cada adición, el resultado se genera multiplicado por 10, que se empuja al final de la pila para usarlo más adelante en la secuencia. Luego se abre la base y comienza la siguiente base.
Pruébalo en línea!
Míralo correr
fuente
C # (.NET Core) , impresión infinita,
181 18088 bytes.Lamentablemente, se bloquea repl.it en lugar de salir correctamente en la versión infinita como está escrito (creo que es un error en repl.it, ya que no sale como el programa se repite como debería), por lo que cualquiera que desee probar necesita un computadora. Si agrega una lectura al principio del bucle, también funciona en repl.it.
Salidas a la consola, obviamente.
En cualquier sistema finito, el código probablemente se bloqueará con un error de falta de memoria.Se modificó el código para usar la lambda de @dana.
Pruébalo en línea!
fuente
Adelante (gforth) , 63 bytes
Pruébalo en línea!
N-indexado salidas n-ésimo valor
Explicación
Si N es menor que 6, arroje el valor absoluto de N - 6. De lo contrario, obtenga el cociente y el resto de dividir N entre 6. Llame a la función recursivamente en el cociente, luego llámela al resto.
Explicación del código
fuente
APL (NARS), 27 caracteres, 54 bytes
traduzca la solución por dana /codegolf//a/179980 en APL ... prueba:
fuente
C #, imprimir de inicio a n, ??? bytes
Gracias a @dana por la expresión lambda.
Operación: Ejecutar con el argumento 0 de la línea de comando igual al número entero con el que desea contar. (Cabe señalar que
a[0]
es una referencia a la matriz de argumentos de la línea de comandos que no se menciona, y no sé cómo contarla).fuente