Zadanie:
Twój program ma odpowiednią , pozytywną, prostą część w formacie <numerator>/<denominator>
.
Dla tego wejścia musi znaleźć dwie frakcje.
- Ułamek, który jest mniejszy niż wkład.
- Ułamek większy niż wkład.
Obie frakcje muszą mieć niższy mianownik niż wkład. Ze wszystkich możliwych ułamków powinny mieć najniższą różnicę w stosunku do danych wejściowych.
Wydajność:
Wyjście twojego programu musi być:
- Ułamek mniejszy niż dane wejściowe w formacie
<numerator>/<denominator>
. - Po nim następuje spacja (kod ASCII 32).
- Po nim ułamek większy niż wejście, w formacie
<numerator>/<denominator>
.
Następująco:
«fraction that is < input» «fraction that is > input»
Zasady:
- Wszystkie wyprowadzane ułamki muszą być najniższe .
- Wszystkie wyprowadzane ułamki muszą być ułamkami właściwymi.
- Jeśli nie są możliwe żadne właściwe ułamki, które są dozwolone przez reguły, musisz podać dane wyjściowe
0
zamiast ułamka <wejście i1
zamiast ułamka> wejście. - Możesz wybrać, czy chcesz otrzymać ułamek jako argument wiersza poleceń (np
yourprogram.exe 2/5
), Czy monit o podanie danych przez użytkownika. - Możesz założyć, że twój program nie otrzyma nieprawidłowych danych wejściowych.
- Najkrótszy kod (w bajtach, w dowolnym języku) wygrywa.
Wszelkie niestandardowe argumenty wiersza polecenia (argumenty, które zwykle nie są wymagane do uruchomienia skryptu) są liczone do całkowitej liczby znaków.
Czego Twój program nie może robić:
- Zależy od wszelkich zasobów zewnętrznych.
- Zależy od posiadania określonej nazwy pliku.
- Wyprowadzaj cokolwiek innego niż wymagane wyjście.
- Uruchomienie zajmuje wyjątkowo długo. Jeśli program działa przez ponad minutę dla ułamków z 6-cyfrowym licznikiem i mianownikiem (np.
179565/987657
) Na komputerze przeciętnego użytkownika domowego, jest nieprawidłowy. - Frakcje wyjściowe z
0
jako mianownik. Nie możesz podzielić przez zero. - Wyprowadzaj ułamki
0
jako licznik. Twój program musi generować wyjście0
zamiast ułamka. - Zmniejsz ułamek wprowadzony. Jeśli ułamek podany jako dane wejściowe jest redukowalny, musisz użyć ułamka podczas wprowadzania.
- Twój program nie może być napisany w języku programowania, dla którego nie istniał publicznie dostępny kompilator / tłumacz przed opublikowaniem tego wyzwania.
Przykłady:
Wejście: 2/5
Wyjście: 1/3 1/2
Wejście: 1/2
Wyjście: 0 1
Wejście: 5/9
Wyjście: 1/2 4/7
Wejście: 1/3
Wyjście: 0 1/2
Wejście: 2/4
Wyjście: 1/3 2/3
Wejście: 179565/987657
Wyjście: 170496/937775 128779/708320
1/3 1/2
.