Aus der ganzen Mathematik wird es immer ein paar Sätze geben, die über den gesunden Menschenverstand hinausgehen. Eine davon ist die Tatsache, dass es verschiedene Größen von Unendlichkeit gibt. Eine weitere interessante Tatsache ist die Idee, dass viele Unendlichkeiten, die unterschiedlich groß zu sein scheinen, tatsächlich gleich groß sind. Es gibt genauso viele gerade Zahlen wie ganze Zahlen, wie es rationale Zahlen gibt.
Das allgemeine Konzept dieser Frage ist die Konfrontation mit der bizarren Realität der Unendlichkeit. In dieser Challenge gibt Ihr Programm eine Liste aus, die:
- Haben Sie zu einem bestimmten Zeitpunkt immer eine ganze Anzahl von Einträgen
- Enthalten Sie eventuell (wenn Sie lange genug warten müssen) eine bestimmte (nicht null) rationale Zahl genau einmal in der gesamten Liste
- Enthält eine unbegrenzte Anzahl leerer Slots (Einträge in der Liste, die unnötigerweise auf 0 gesetzt sind)
- Einen Anteil an leeren Slots haben, der sich einem Limit von 100% nähert
- Haben Sie für jede positive ganze Zahl N eine unendliche Anzahl von Stellen mit N aufeinanderfolgenden leeren Slots
Die Herausforderung
Ihre Herausforderung besteht darin, das kürzestmögliche Programm zu schreiben, das eine spezielle Liste mit den folgenden Regeln ausgibt:
- Alle Einträge mit einem Index, der keine quadratische Zahl ist, sollten auf Null gesetzt werden. Der erste Eintrag ist also ungleich Null, der zweite und dritte ungleich Null, der vierte ungleich Null usw.
- Alle rationalen Zahlen haben die Form eines falschen Bruches (wie 4/5 oder 144/13), der vereinfacht wurde. Die Ausnahme sind Nullen, was einfach sein wird
0
. - Alle (positiven und negativen) rationalen Zahlen sollten irgendwann in der Liste erscheinen, wenn Ihr Programm lange genug und mit genügend Speicher läuft. Für eine bestimmte rationale Zahl kann die benötigte Zeit eine willkürlich große, aber immer begrenzte Zeitdauer sein.
- Wenn für eine unendliche Zeitspanne ausgeführt, sollte keine rationale Zahl ungleich Null jemals zweimal auftreten.
Regel 3 lässt gewisse Abweichungen zu, da es unendlich viele verschiedene mögliche rechtliche Ergebnisse gibt.
Die Ausgabe erfolgt in Form eines Zeilenstroms. Jede Zeile hat die allgemeine Form, 5: 2/3
wobei die erste Nummer die Eintragsnummer ist, gefolgt von der rationalen Nummer. Beachten Sie, dass dies 1: 0
immer die erste Ausgabezeile ist.
Beispielausschnitt der Ausgabe:
1: 1/1
2: 0
3: 0
4: 2/1
5: 0
6: 0
7: 0
8: 0
9: -2/1
10: 0
etc...
Regeln, Vorschriften und Hinweise
Das ist Code Golf. Es gelten die Standard-Code-Golfregeln. Aufgrund der Abweichungen, die in der Ausgabe zulässig sind, müssen Sie zumindest nachweisen, warum Sie glauben, dass Ihre Liste alle möglichen rationalen Zahlen genau einmal enthält und Ihre Lösung korrekt ist.
EDIT: Da die Primzahlen von der Herausforderung abgelenkt haben, ändere ich sie in quadratische Zahlen. Dies erfüllt den gleichen Zweck und verkürzt auch die Lösungen.
1: 0
immer die erste Ausgabezeile ist. - Dies widerspricht Ihrem Beispiel und ergibt für mich auch keinen Sinn.