Ridurre le frazioni nel modo sbagliato
In questa sfida di code-golf devi trovare frazioni che possono essere ridotte nel modo sbagliato ma che finiscono comunque con lo stesso numero.
Nota: ridurre le frazioni nel modo sbagliato qui ha una definizione esatta, vedere i dettagli.
Esempio:
64/16 = 6 4/1 6 = 4/1 = 4
Ovviamente non puoi semplicemente colpire entrambi i 6 ma qui finisci comunque con il valore corretto. In questa sfida devi trovare esempi come questo.
Dettagli
Devi scrivere una funzione / programma che accetta un intero positivo n
come input e output / restituisce un elenco / array delle frazioni in formato
numerator1,denominator1,numerator2,denominator2,...
Il programma deve scoprire per ogni frazione a/b
con a+b=n
e a,b>0
se può essere ridotto nel modo sbagliato . (Non importa se può essere ridotto nel modo convenzionale o se ci sono molte possibilità di riduzioni, deve solo essere possibile ridurlo nel modo sbagliato in almeno un modo.)
Definizione del modo sbagliato: una frazione può essere ridotta nel modo sbagliato se e solo se la stessa sequenza di cifre successive appare in a e b e se il valore della frazione rimane lo stesso se si rimuove la sottostringa.
Esempio: 1536/353 può essere 'ridotto' a 16/3 ma quei due valori non sono uguali, quindi non è possibile ridurre questa frazione nel modo sbagliato .
Nota che questa definizione di riduzione del modo sbagliato può anche includere frazioni che sono ridotte nel modo giusto: 110/10 = 11/1
rientra nella definizione di riduzione del modo sbagliato anche se è un passo valido.
punteggio
Vince il numero minimo di byte. È possibile scrivere una funzione o un programma che accetta un numero intero e restituisce un array o un programma che utilizza stdin / stdout oppure si può considerare n salvato in una variabile e alla fine del programma l'elenco deve essere salvato in un'altra variabile.
Casi test
Ti preghiamo di includere i seguenti test (dimmi quali dovrei aggiungere, non ho idea di quante di queste frazioni ci siano / quanti esempi aspettarsi)
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
) non è corretto: 49/89 != 4/8
.