Niewłaściwe zmniejszenie frakcji
W tym wyzwaniu golfa musisz znaleźć frakcje, które można zmniejszyć w niewłaściwy sposób, ale wciąż kończą się tą samą liczbą.
Uwaga: zmniejszenie ułamków w niewłaściwy sposób ma tutaj dokładną definicję, zobacz szczegóły.
Przykład:
64/16 = 6 4/1 6 = 4/1 = 4
Oczywiście nie możesz po prostu trafić obu 6, ale tutaj nadal masz prawidłową wartość. W tym wyzwaniu musisz znaleźć takie przykłady.
Detale
Musisz napisać funkcję / program, który przyjmuje jedną dodatnią liczbę całkowitą n
jako dane wejściowe i wyjściowe / zwraca listę / tablicę ułamków w formacie
numerator1,denominator1,numerator2,denominator2,...
Program ma znaleźć się na każdej frakcji a/b
z a+b=n
i a,b>0
czy może ona zostać zmniejszona w niewłaściwy sposób . (Nie ma znaczenia, czy można to zmniejszyć w sposób konwencjonalny, czy też istnieje wiele możliwości redukcji, musi być możliwe zmniejszenie go w niewłaściwy sposób przynajmniej na jeden sposób).
Definicja niewłaściwego sposobu: Ułamek można zmniejszyć w niewłaściwy sposób tylko wtedy, gdy ta sama sekwencja kolejnych cyfr pojawia się w aib oraz jeśli wartość ułamka pozostaje taka sama, jeśli usuniesz podłańcuch.
Przykład: 1536/353 można „zredukować” do 16/3, ale te dwie wartości nie są równe, więc nie można zmniejszyć tej frakcji w niewłaściwy sposób .
Zauważ, że ta definicja zmniejszania niewłaściwego sposobu może również obejmować ułamki, które są zmniejszane we właściwy sposób: 110/10 = 11/1
mieści się w definicji zmniejszania niewłaściwego sposobu, mimo że jest to właściwy krok.
Punktacja
Wygrywa najmniejsza liczba bajtów. Możesz napisać funkcję lub program, który akceptuje liczbę całkowitą i zwraca tablicę lub program, który używa stdin / stdout, lub możesz rozważyć n zapisane w zmiennej, a na końcu programu lista musi zostać zapisana w innej zmiennej.
Przypadki testowe
Podaj następujące przypadki testowe (Powiedz mi, które powinienem dodać, nie mam pojęcia, ile jest tych ułamków / ile przykładów można się spodziewać)
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
) jest nieprawidłowy: 49/89 != 4/8
.