Su tarea es tomar un n
elemento n
de entrada y salida de la secuencia rummy, una secuencia que hice (mirar en OEIS no lo ayudará).
Definición
Cada elemento de la secuencia rummy es un conjunto de valores verdaderos o falsos. Ej [true, false]
. : .
Los pasos para producir un miembro de la secuencia rummy son bastante simples:
- Comience con el primer índice,
[]
(este es el elemento 0). - Establezca la falsey de la izquierda en veraz Si no hay falseys para cambiar, aumente la longitud de la lista en 1 y configure todos los miembros de la nueva lista en falsey.
- Repita el paso 2 hasta llegar al elemento
n
.
Ejemplo
Definamos nuestra función como rummy(int n)
(el material {}
es un paso para llegar a la respuesta):
>>> rummy(5)
{[]}
{[false]}
{[true]}
{[false, false]}
{[true, false]}
[true, true]
Reglas
- Se aplican lagunas estándar.
- Debe funcionar para las entradas 0 a través del límite numérico superior de su idioma.
- Puede emitir de la forma que considere adecuada, siempre que esté claro que la salida es un conjunto de verdadero / falso.
Trivialidades
Yo llamo a esto la "Secuencia Rummy" porque, comenzando en el índice 2, define los conjuntos que necesitarías establecer en cada ronda de Rummy Progresivo , donde Falsey es un libro y la verdad es una carrera.
Casos de prueba
>>> rummy(0)
[]
>>> rummy(1)
[false]
>>> rummy(6)
[false, false, false]
>>> rummy(20)
[true, true, true, true, true]
>>> rummy(1000)
[true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
code-golf
math
array-manipulation
Addison Crump
fuente
fuente
1
a11
, obtienes en000
lugar de100
. ; P1*0*
.Respuestas:
JavaScript ES6,
949272706664 bytes¡Guardado 6 bytes gracias a Neil!
No creo que se pueda jugar más al golf. Al menos con las ecuaciones.
Explicación
Son dos ecuaciones principales (
n
es entrada):Esto le dará el tamaño total que tendrá que ser la matriz de salida. En mi programa, utilicé en
>>1
lugar de que(...)/2
estos sean los mismos, ya que el primer bit en binario tiene un valor de 2. Cambiarlo dará como resultadofloor(.../2)
Esta es la cantidad de
true
s que habrá.a
Es el resultado de la expresión anterior.Esto es lo que hace la sintaxis:
Este código genera una matriz con rango
[0, n)
en esta respuestan
es la primera ecuación..map((_,l)=>l<n)
esto recorrerá el rango anterior,l
es la variable que contiene el elemento actual en el rango. Si el ítem es menor que la cantidad de verdaderas que son (determinado por la segunda ecuación), entonces regresarátrue
, de lo contrariofalse
.fuente
>>1
lugar de/2|0
. Usar en(_,l)=>
lugar de.keys()
.Array.from()
?, Rellenar o algo más?[...Array(a)].map((_,l)=>)
lo que creo que es un poco más corto, pero es una buena idea eliminar algunos de los()
mensajes de correo electrónico al cambiar a>>1
, ¡no lo había visto!a*-~a/2
; No sé por qué no lo pensé antes.Python, 51 bytes
Emite una lista de 1 y 0.
fuente
Pyth, 8 bytes
Pruébelo en línea: Demostración o conjunto de pruebas
Esto es exponencialmente lento.
Explicación:
fuente
Jalea ,
1311 bytesEl código no funciona en la última versión de Jelly antes de que se publicara el desafío, pero funcionó en esta versión , que es anterior al desafío.
Los índices están basados en 1. Pruébalo en línea! (toma unos segundos) o verifique múltiples entradas a la vez .
Cómo funciona
fuente
05AB1E, 27 bytes
Veré si puedo jugar un poco más y agregaré una explicación por la mañana.
Pruébalo en línea
fuente
Java,
117110 bytescreé mi propio tipo booleano, lo que me permitió guardar 7bytes
fuente
Python 2,
6963 bytesPruébalo en Ideone .
fuente
Python 2, 61 bytes
Resuelve para n = j · (j + 1) / 2 . La entrada se toma de stdin.
Uso de muestra
Demostración .
fuente
APL (Dyalog Extended) , SBCS de 21 bytes
Pruébalo en línea!
fuente