Adaptado de este acertijo FiveThirtyEight .
Antecedentes
Examine la siguiente secuencia infinita:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Digamos que la secuencia está indexada en 1. El i
número th en la secuencia determina cuántos 3
s hay antes del i
th 2
y después de cualquier 2
s anterior . Entonces, dado que la secuencia comienza con a, 3
la secuencia debe comenzar 3 3 3 2
y dado que hay tres 3
s al comienzo de la secuencia, la subsecuencia 3 3 3 2
debe repetirse tres veces. Después de eso alcanzas 3 3 2
porque el cuarto número en la secuencia es 2
.
El enigma FiveThirtyEight pregunta por el límite de las razones de tres a dos (que no voy a estropear aquí) pero también puede preguntar cuál es la relación acumulativa después del índice i
. Por ejemplo, la relación en i=4
es 3/1 = 3
y en i=15
es 11/4 = 2.75
.
Seamos generales
Dados los números n
y k
podemos hacer una secuencia similar que comience con n
y tal como se describe en la secuencia original, el número en el índice i
determina cuántos n
s aparecen antes del i
th k
y después de cualquier k
s anterior .
Ejemplos:
n=2, k=5
da la secuencia 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0
da 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3
da 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
El reto
Escriba una función / programa y con ella haga lo siguiente. Tomar como entrada:
- un entero positivo
n
- un entero no negativo
k ≠ n
- un entero positivo
i > n
Las dos primeras entradas n
y k
determinar una secuencia como se describe anteriormente y i
es un índice. Estoy usando la indexación 1 en los ejemplos, pero usted tiene la libertad de usar la indexación 0 o 1. Si está indexado a 0, entonces la restricción i
es i ≥ n
.
Con la salida de los tres números, la relación de n
s a k
s en la secuencia hasta e incluyendo el número en el índice i
. El formato de la salida puede ser un valor decimal con al menos 5 dígitos de precisión o un valor exacto como una relación como 3524/837
o 3524:837
.
En forma decimal, el último dígito se puede redondear como desee. Se permiten ceros finales y espacios en blanco.
En cualquiera de las formas de cadena, los dos números deben normalizarse para que sean coprimos. Por ejemplo, si la relación era 22/4, 11/2
y 11:2
son aceptables pero 22/4
no lo son.
Ejemplos
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
Este es el código de golf por idioma, por lo que el código más corto en cada idioma es el ganador.
/
o:
simplemente agrega una complicación innecesaria al desafío.Respuestas:
Casco , 16 bytes
Pruébalo en línea!
Toma entradas en el mismo orden que los casos de prueba. Emite un número racional. Siento que esto tiene demasiados superíndices, pero no sé cómo deshacerme de ellos ...
Explicación
fuente
Python 3 ,
94928987 bytesPruébalo en línea!
Créditos
fuente
.count(n)
?Jalea , 22 bytes
Pruébalo en línea!
Programa completo Toma argumentos
n
,k
,i
.Hay un error que hace que esta necesidad sea innecesariamente más larga en 1 byte.
fuente
`
hace que funcione. Ah, y donde su respuesta difiere es que olvidé implementar un campo de golf que encontré en otro idioma> _>Jalea ,
2516 bytes-9 bytes ~ 50% atribuible a la respuesta de Erik the Outgolfer's Jelly (1. usando la nueva clave rápida
ƙ
incluso con un error en el intérprete que actualmente cuesta un byte; 2. usando una repetición asignada para evitar contar e indexar en la secuencia actual .) ¡Ve y dale un poco de crédito!Un programa completo de tomar tres argumentos:
n
,k
,i
que imprime el resultado.Pruébalo en línea!
¿Cómo?
ejemplo de ejecución con entradas
n=2
,k=3
,i=30
:fuente
Mathematica, 85 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
12670 bytesPruébalo en línea!
Bueno, gracias a @ Adám por borrar 56 bytes de esta respuesta.
Este es un Tradfn niládica ( trad itional f unctio n ) tomando 1 de entrada, que es una lista de 3 elementos.
⎕PP←5
No se añade a la cuenta de bytes, ya que sólo se usa para limitar la P rint P recisión de 5 dígitos.∇f
y∇
no se agregan al recuento de bytes porque no son parte del código, solo delimitadores para el tradfn.Cómo funciona:
fuente
R , 88 bytes
Pruébalo en línea!
fuente
for
cuerpo del bucle ya que solo hay una declaración.Swift , 152 bytes
¿Será más corto que Java?
Explicación
fuente
Ruby ,
777170 bytesPruébalo en línea!
Devuelve un Rational, que funciona como un número y se clasifica a la fracción reducida exacta.
fuente
Pyth , 24 bytes
Banco de pruebas.
Punto fijo de
[n]
bajo cierta función de matriz.fuente
Zephyr , 284 bytes
Toma los tres números de stdin en tres líneas separadas. Produce una proporción exacta como
104/11
o63
.Sin golf
fuente