Primero, hablemos de las secuencias de Beatty . Dado un número irracional positivo r , podemos construir una secuencia infinita multiplicando los enteros positivos a r en orden y tomando el piso de cada cálculo resultante. Por ejemplo,

Si r > 1, tenemos una condición especial. Podemos formar otro número irracional s como s = r / ( r - 1). Esto puede generar su propia secuencia Beatty, B s . El truco es que B r y B s son complementarios , lo que significa que cada entero positivo está exactamente en una de las dos secuencias.
Si establecemos r = ϕ, la proporción áurea, obtenemos s = r + 1 y dos secuencias especiales. La secuencia inferior de Wythoff para r :
1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, ...
y la secuencia superior de Wythoff para s :
2, 5, 7, 10, 13, 15, 18, 20, 23, 26, 28, 31, 34, 36, 39, 41, 44, 47, ...
Estas son las secuencias A000201 y A001950 en OEIS, respectivamente.
El reto
Dado un entero de entrada positivo 1 <= n <= 1000, genera uno de dos valores distintos que indican si la entrada está en la secuencia de Wythoff inferior o en la secuencia superior . Los valores de salida pueden ser -1y 1, truey false, uppery lower, etc.
Aunque su algoritmo enviado debe funcionar teóricamente para todas las entradas, en la práctica solo tiene que funcionar con los primeros 1000 números de entrada.
E / S y reglas
- La entrada y salida se pueden dar por cualquier método conveniente .
- Se puede suponer que la entrada y la salida encajan en el tipo de número nativo de su idioma.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
fuente

Respuestas:
JavaScript (ES6),
5035 bytesSalidas
1para inferior y0para superior. Explicación: listas parciales de valores booleanos se puede construir usando un Fibonacci-como identidad: dado dos listas, comenzando con1y10, cada lista posterior es la concatenación de las dos anteriores, lo que resulta en101,10110,10110101etc. En este caso es ligeramente Golfier tener una entrada 0 falsa y úsela0para construir el segundo elemento de la lista.fuente
Haskell , 26 bytes
Pruébalo en línea!
Sin flotadores, precisión ilimitada. Gracias por H.PWiz por dos bytes.
fuente
~(x:t). Graciasundefined. El hecho de que también haya dos diferentes definidos es accidental.Python , 25 bytes
Pruébalo en línea!
Utiliza la condición muy simple:
Tenga en cuenta que el resultado del módulo es positivo aunque
-nsea negativo, y coincide con la forma en que Python hace el módulo.Esto corresponde a este código:
Pruébalo en línea!
Ahorramos un byte al duplicarlo
-(n*2)%(phi*2)<2.fuente
05AB1E , 9 bytes
Pruébalo en línea!
0 significa superior, 1 significa inferior. Pruebe los primeros 100: ¡ Pruébelo en línea!
Volcado de comando sin procesar:
fuente
ï:)5t>;a 2 byter puede que no valga la pena ...ïy¢jajaja :) Todas nuestras soluciones están tan estrechamente relacionadasJalea , 5 bytes
Pruébalo en línea!
Guardado 1 byte gracias al golf Python de xnor .
Jalea , 6 bytes
Pruébalo en línea!
Devuelve 1 para inferior y 0 para superior.
fuente
Øp5t>;Brain-Flak , 78 bytes
Pruébalo en línea!
No produce nada para inferior y
0superior. Cambiar a un esquema de salida más sensato costaría 6 bytes.fuente
Python 2 ,
393332 bytes-6 bytes gracias al Sr. Xcoder
-1 byte gracias a Zacharý
Pruébalo en línea!
Retornos
Falsepara inferior yTruesuperiorfuente
lambda n,r=(1+5**.5)/2:-~n//r<n/rahorra 6 bytes.lambda n,r=.5+5**.5/2:-~n//r<n/rdebería funcionar para afeitarse un byteJulia 0.6 , 16 bytes
Pruébalo en línea!
Mientras jugaba con los números, me encontré con esta propiedad: floor (n / φ) == floor ((n + 1) / φ) si n está en la secuencia superior de Wythoff, y floor (n / φ) <floor ( (n + 1) / φ) si n está en la secuencia inferior de Wythoff. No he descubierto cómo se produce esta propiedad, pero da los resultados correctos al menos hasta n = 100000 (y probablemente más allá).
Vieja respuesta:
Julia 0.6 , 31 bytes
Pruébalo en línea!
Devuelve
truepara lafalsesecuencia de Wythoff inferior y superior.fuente
Pyth , 8 bytes
Pruébalo aquí!
Devuelve 1 para inferior y 0 para superior.
fuente
Wolfram Language (Mathematica) , 26 bytes
Pruébalo en línea!
Un entero
nestá en la secuencia de Wythoff inferior iffceil(n/phi) - 1/phi < n/phi.Prueba de que
ceil(n/phi) - 1/phi < n/phies ...Suficiente:
Dejar
ceil(n/phi) - 1/phi < n/phi.A continuación,
ceil(n/phi) * phi < n + 1.Nota
n == n/phi * phi <= ceil(n/phi) * phi.Por lo tanto,
n <= ceil(n/phi) * phi < n + 1.Como
nyceil(n/phi)son enteros, invocamos la definición de piso y estadofloor(ceil(n/phi) * phi) == n, ynestá en la secuencia inferior de Wythoff.Necesario; prueba por contrapositivo:
Dejar
ceil(n/phi) - 1/phi >= n/phi.A continuación,
ceil(n/phi) * phi >= n + 1.Nota
n + phi > (n/phi + 1) * phi > ceil(n/phi) * phiPor lo tanto
n > (ceil(n/phi) - 1) * phi.Como
(ceil(n/phi) - 1) * phi < n < n + 1 <= ceil(n/phi) * phi,nno está en la secuencia inferior de Wythoff.fuente
Japt , 10 bytes
Devuelve verdadero para inferior y falso para superior.
Pruébalo en línea!
Explicación:
fuente
Java 10,
775352 bytesPuerto de la respuesta de @ Rod's Python 2 .
-1 byte gracias a @ Zacharý .
Pruébalo en línea.
Antigua respuesta de
7776 bytes:-1 byte gracias a @ovs 'por algo que me recomendé la semana pasada ... xD
Devoluciones
1por menor;0para superior.Pruébalo en línea.
Explicación:
i*Phise calcula tomando(sqrt(5)+1)/2 * i, y luego lo piso al convertirlo en un número entero para truncar el decimal.fuente
++i<=nen su vieja respuesta puede seri++<n.n->{var r=Math.sqrt(5)/2+.5;return(int)(-~n/r)<n/r;}Haskell ,
15313912679 bytesPrecisión ilimitada!
Pruébalo en línea!
Explicación
En lugar de usar una aproximación de la proporción áurea para calcular el resultado, significa que son propensos a errores a medida que aumenta el tamaño de la entrada. Esta respuesta no. En su lugar, utiliza la fórmula provista en el OEIS que
aes la secuencia única tal que¿Dónde
bestá el cumplido ordenado?fuente
Brachylog , 8 bytes
Pruébalo en línea!
El predicado tiene éxito si la entrada está en la secuencia de Wythoff inferior y falla si está en la secuencia de Wythoff superior.
Si el hecho de no terminar es un método de salida válido, se puede omitir el primer byte.
fuente
φse usa en un programa Brachylog. ¡Por fin!MATL , 8 bytes
Pruébalo en línea!
Explicación
fuente
K (oK) , 20 bytes
Solución:
Pruébalo en línea!
Explicación:
fuente
TI-BASIC (TI-84), 18 bytes
La entrada está adentro
Ans.La salida está en
Ansy se imprime automáticamente.Imprime
1si la entrada está en la secuencia inferior o0si está en la secuencia superior.Ejemplo:
Explicación:
Nota: TI-BASIC es un lenguaje tokenizado. El recuento de caracteres no es igual al recuento de bytes.
fuente
cQuents , 5 bytes
Pruébalo en línea!
Explicación
fuente