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 inúmero th en la secuencia determina cuántos 3s hay antes del ith 2y después de cualquier 2s anterior . Entonces, dado que la secuencia comienza con a, 3la secuencia debe comenzar 3 3 3 2y dado que hay tres 3s al comienzo de la secuencia, la subsecuencia 3 3 3 2debe repetirse tres veces. Después de eso alcanzas 3 3 2porque 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=4es 3/1 = 3y en i=15es 11/4 = 2.75.
Seamos generales
Dados los números ny kpodemos hacer una secuencia similar que comience con ny tal como se describe en la secuencia original, el número en el índice idetermina cuántos ns aparecen antes del ith ky después de cualquier ks 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 ny kdeterminar una secuencia como se describe anteriormente y ies 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 ies i ≥ n.
Con la salida de los tres números, la relación de ns a ks 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/837o 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/2y 11:2son aceptables pero 22/4no 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,ique 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←5No 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.∇fy∇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
forcuerpo 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/11o63.Sin golf
fuente