Todos sabemos que sempre que um número racional é escrito em decimal, o resultado é finalizado ou (eventualmente) periódico. Por exemplo, quando 41/42 é escrito em decimal, o resultado é
0.9 761904 761904 761904 761904 761904 761904 761904 ...
com uma sequência inicial de dígitos 0.9
seguida pela sequência 761904
repetida várias vezes. (Uma notação conveniente para isso é 0.9(761904)
onde os parênteses cercam o bloco de dígitos repetidos.)
Seu objetivo neste desafio é pegar um número racional positivo, excluir o primeiro dígito que faz parte da sequência de repetição e retornar o número racional resultante. Por exemplo, se fizermos isso para 41/42, obtemos
0.9 61904 761904 761904 761904 761904 761904 761904 ...
ou 0.9(619047)
abreviado, que é 101/105.
Se o número racional tiver uma expansão decimal final, como 1/4 = 0.25
, nada deve acontecer. Você pode pensar em 1/4 como 0.250000000...
ou como, 0.249999999...
mas em ambos os casos, a exclusão do primeiro dígito da parte repetida deixa o número inalterado.
Detalhes
- A entrada é um número racional positivo, como um par de números inteiros positivos, representando o numerador e o denominador, ou (se o seu idioma de escolha permitir e você desejar) como algum tipo de objeto de número racional.
- A saída também é um número racional, também em qualquer forma. Se o resultado for um número inteiro, você poderá retornar o número inteiro em vez de um número racional.
- Se você usar um par de números como entrada, pode assumir que eles são relativamente primos; se estiver produzindo um par de números como saída, você deve torná-los relativamente primos.
- Cuidado para encontrar o primeiro dígito que inicia um bloco repetitivo. Por exemplo, alguém poderia escrever 41/42 como
0.97(619047)
mas isso não torna 2041/2100 (com expansão decimal0.97(190476)
) uma resposta válida. - Você pode supor que, na entrada obtida, o primeiro dígito periódico esteja após o ponto decimal, tornando
120/11
=10.909090909...
entrada inválida: (seu primeiro dígito periódico pode ser considerado0
como entrada10
). Você pode fazer o que quiser com essas informações. - Este é o código-golfe : a solução mais curta vence.
Casos de teste
41/42 => 101/105
101/105 => 193/210
193/210 => 104/105
104/105 => 19/21
1/3 => 1/3
1/4 => 1/4
2017/1 => 2017/1
1/7 => 3/7
1/26 => 11/130
1234/9999 => 2341/9999
(2017,1)
.)
2/4
acontecer na entrada?
120/11
a resposta correta 111/11
ou 210/11
?
111/11
exceto que a resposta mais votada no momento retorna 210/11
, então vou deixar você escolher para evitar a invalidação das respostas existentes.
2017
vez de2017/1
?