Reduzindo frações da maneira errada
Neste desafio do código-golfe, você precisa encontrar frações que podem ser reduzidas da maneira errada, mas que acabam no mesmo número.
Nota: reduzir frações da maneira errada tem aqui uma definição exata, veja detalhes.
Exemplo:
64/16 = 6 4/1 6 = 4/1 = 4
Claro que você não pode simplesmente acertar os 6es, mas aqui você ainda terá o valor correto. Neste desafio, você precisa encontrar exemplos como este.
Detalhes
Você precisa escrever uma função / programa que aceite um número inteiro positivo n
como entrada e produz / retorna uma lista / matriz das frações no formato
numerator1,denominator1,numerator2,denominator2,...
O programa tem que descobrir por cada fracção a/b
com a+b=n
e a,b>0
se ele pode ser reduzido de forma errada . (Não importa se ele pode ser reduzido da maneira convencional ou se existem muitas possibilidades de reduções, basta que seja possível reduzi-la da maneira errada de pelo menos uma maneira.)
Definição da maneira errada: Uma fração pode ser reduzida da maneira errada se e somente se a mesma sequência de dígitos sucessivos aparecer em aeb e se o valor da fração permanecer o mesmo se você remover a substring.
Exemplo: 1536/353 pode ser 'reduzido' para 16/3, mas esses dois valores não são iguais, portanto, você não pode reduzir essa fração da maneira errada .
Observe que essa definição de redução da maneira errada também pode incluir frações reduzidas da maneira correta: 110/10 = 11/1
está dentro da definição de redução da maneira errada, mesmo que seja uma etapa válida.
Pontuação
O menor número de bytes vence. Você pode escrever uma função ou programa que aceita um número inteiro e retorna uma matriz ou um programa que usa stdin / stdout ou pode considerar n salvo em uma variável e no final do programa a lista deve ser salva em outra variável.
Casos de teste
Inclua os seguintes casos de teste (diga-me quais devo adicionar, não tenho idéia de quantas dessas frações existem / quantos exemplos esperar)
n=80 (64/16 should be in this list)
n=147 (98/49 should be in this list)
n=500 (294/196 should be in this list) WRONG since 294+196 != 500 Thanks Falko
1010/10 = 101/1 && 1010/10 /= 110/1
n=147
) está incorreta: 49/89 != 4/8
.