Adaptado deste enigma FiveThirtyEight .
fundo
Examine a seguinte sequência infinita:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Digamos que a sequência seja indexada em 1. O inúmero th na sequência determina quantos 3s existem antes do ith 2e após os 2s anteriores . Portanto, como a sequência começa com a, 3a sequência deve começar 3 3 3 2e, como existem três 3s no início da sequência, a subsequência 3 3 3 2deve se repetir três vezes. Depois disso, você alcança 3 3 2porque o quarto número na sequência é 2.
O enigma FiveThirtyEight pede o limite das proporções de três a dois (o que não vou estragar aqui), mas você também pode perguntar qual é a proporção cumulativa após o índice i. Por exemplo, a proporção em i=4é 3/1 = 3e i=15é 11/4 = 2.75.
Vamos nos generalizar
Dados os números ne kpodemos criar uma sequência semelhante que comece com ne, assim como a sequência original descrita, o número no índice idetermina quantos ns aparecem antes do ith ke após os ks anteriores .
Exemplos:
n=2, k=5 dá a sequência 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0 dá 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3 dá 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
O desafio
Escreva uma função / programa e com ela faça o seguinte. Tome como entrada:
- um número inteiro positivo
n - um número inteiro não negativo
k ≠ n - um número inteiro positivo
i > n
As duas primeiras entradas ne kdeterminam uma sequência como descrito acima e ié um índice. Estou usando a indexação 1 nos exemplos, mas você tem a liberdade de usar a indexação 0 ou 1. Se indexado em 0, a restrição ié i ≥ n.
Com os três números, imprima a proporção de ns para ks na sequência até e incluindo o número no índice i. O formato da saída pode ser um valor decimal com pelo menos 5 dígitos de precisão ou um valor exato como uma proporção como 3524/837ou 3524:837.
Na forma decimal, o último dígito pode ser arredondado da maneira que desejar. Zeros à direita e espaços em branco são permitidos.
Em qualquer uma das formas de cadeia, os dois números precisam ser normalizados para que sejam coprime. Por exemplo, se a proporção era 22/4 11/2e 11:2é aceitável, mas 22/4não é.
Exemplos
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
Esse é o código de golfe por idioma; portanto, o código mais curto em cada idioma é o vencedor.
/ou :simplesmente adicionar uma complicação desnecessária ao desafio.