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 i
número th na sequência determina quantos 3
s existem antes do i
th 2
e após os 2
s anteriores . Portanto, como a sequência começa com a, 3
a sequência deve começar 3 3 3 2
e, como existem três 3
s no início da sequência, a subsequência 3 3 3 2
deve se repetir três vezes. Depois disso, você alcança 3 3 2
porque 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 = 3
e i=15
é 11/4 = 2.75
.
Vamos nos generalizar
Dados os números n
e k
podemos criar uma sequência semelhante que comece com n
e, assim como a sequência original descrita, o número no índice i
determina quantos n
s aparecem antes do i
th k
e após os k
s 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 n
e k
determinam 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 n
s para k
s 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/837
ou 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/2
e 11:2
é aceitável, mas 22/4
nã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.