Aufgabe:
Ihr Programm erhält einen korrekten , positiven einfachen Bruch im Format <numerator>/<denominator>
.
Für diese Eingabe müssen zwei Brüche gefunden werden.
- Ein Bruchteil, der kleiner als die Eingabe ist.
- Ein Bruchteil, der größer als die Eingabe ist.
Beide Brüche müssen einen niedrigeren Nenner als die Eingabe haben. Von allen möglichen Brüchen sollten sie den geringsten Unterschied zur Eingabe aufweisen.
Ausgabe:
Die Ausgabe Ihres Programms muss sein:
- Ein Bruch, der im Format kleiner als die Eingabe ist
<numerator>/<denominator>
. - Gefolgt von einem Leerzeichen (ASCII-Code 32).
- Gefolgt von einem Bruch, der größer als die Eingabe ist, im Format
<numerator>/<denominator>
.
Wie folgt:
«fraction that is < input» «fraction that is > input»
Regeln:
- Alle ausgegebenen Brüche müssen in niedrigsten Ausdrücken angegeben werden .
- Alle ausgegebenen Brüche müssen richtige Brüche sein.
- Wenn keine korrekten Brüche möglich sind, die nach den Regeln zulässig sind, müssen Sie
0
anstelle eines Bruches <input und ausgeben1
> anstelle eines Bruchs> eine Eingabe vornehmen. - Sie können wählen, ob Sie den Bruch als Befehlszeilenargument erhalten möchten (z. B.
yourprogram.exe 2/5
) oder zur Eingabe durch den Benutzer . - Sie können davon ausgehen, dass Ihr Programm keine ungültigen Eingaben erhält.
- Der kürzeste Code (in Bytes, in jeder Sprache) gewinnt.
Alle nicht standardmäßigen Befehlszeilenargumente (Argumente, die normalerweise nicht zum Ausführen eines Skripts erforderlich sind) werden auf die Gesamtzahl der Zeichen angerechnet.
Was Ihr Programm nicht tun darf :
- Abhängig von externen Ressourcen.
- Hängen Sie davon ab, einen bestimmten Dateinamen zu haben.
- Geben Sie etwas anderes als die erforderliche Ausgabe aus.
- Es dauert außergewöhnlich lange zu laufen. Wenn Ihr Programm für Brüche mit einem 6-stelligen Zähler und Nenner länger als eine Minute läuft (z. B.
179565/987657
) auf dem Computer eines durchschnittlichen Heimanwenders ausgeführt wird, ist es ungültig. - Ausgabefraktionen mit
0
als Nenner. Sie können nicht durch Null teilen. - Brüche mit
0
als Zähler ausgeben. Ihr Programm muss0
anstelle eines Bruchs ausgegeben werden. - Reduzieren Sie einen eingegebenen Bruch. Wenn der als Eingabe angegebene Bruch reduzierbar ist, müssen Sie den als Eingabe angegebenen Bruch verwenden.
- Ihr Programm darf nicht in einer Programmiersprache geschrieben sein, für die es vor Veröffentlichung dieser Herausforderung keinen öffentlich verfügbaren Compiler / Interpreter gab.
Beispiele:
Eingabe: 2/5
Ausgabe: 1/3 1/2
Eingabe: 1/2
Ausgabe: 0 1
Eingabe: 5/9
Ausgabe: 1/2 4/7
Eingabe: 1/3
Ausgabe: 0 1/2
Eingabe: 2/4
Ausgabe: 1/3 2/3
Eingabe: 179565/987657
Ausgabe: 170496/937775 128779/708320
1/3 1/2
.