Diese Herausforderung basiert auf einigen neuen Erkenntnissen im Zusammenhang mit der Collatz-Vermutung und wurde im Geiste eines kollaborativen Polymath-Projekts entworfen . Das Lösen der vollständigen Vermutung wird von Experten der Mathematik- / Zahlentheorie als äußerst schwierig oder möglicherweise unmöglich angesehen, aber diese einfachere Aufgabe ist durchaus machbar und es gibt viele Beispiele für Beispielcode. Im besten Fall könnten neue theoretische Erkenntnisse über das Problem gewonnen werden, die auf den Einträgen / dem Einfallsreichtum / der Kreativität der Teilnehmer beruhen.
Der neue Befund lautet wie folgt: Stellen Sie sich eine zusammenhängende Reihe von ganzen Zahlen [ n1 ... n2 ] vor, sagen wir m total. Weisen Sie diese Ganzzahlen einer Listenstruktur zu. Nun kann eine verallgemeinerte Version der Collatz-Vermutung wie folgt vorgehen. Iterieren Sie eine der m (oder weniger) Ganzzahlen in der nächsten Liste basierend auf einigen Auswahlkriterien / Algorithmen. Entfernen Sie diese Ganzzahl aus der Liste, wenn sie 1 erreicht. Die Collatz-Vermutung entspricht eindeutig der Bestimmung, ob dieser Prozess für alle Auswahlmöglichkeiten von n1, n2 immer erfolgreich ist .
Hier ist die Wendung, eine zusätzliche Einschränkung. Addieren Sie bei jedem Schritt die m aktuellen Iterationen in der Liste. Betrachten Sie dann die Funktion f (i), wobei i die Iterationsnummer und f (i) die Summe der aktuellen Iterationen in der Liste ist. Suchen Sie nach f (i) mit einer bestimmten "schönen" Eigenschaft.
Das gesamte / Gesamtkonzept ist besser / gründlicher dokumentiert hier (mit vielen Beispielen in Rubin). Das Ergebnis ist, dass ziemlich einfache Strategien / Heuristiken / Algorithmen existieren, die zu einer "ungefähr monoton abnehmenden" f (i) führen , und dass auf dieser Seite viele Beispiele angegeben sind. Hier ist ein Beispiel für die grafische Ausgabe (über Gnuplot dargestellt):
Hier ist also die Herausforderung: Verwenden Sie Variationen der vorhandenen Beispiele oder völlig neue Ideen, um einen Auswahlalgorithmus zu erstellen, der dazu führt, dass f (i) "so nahe wie möglich monoton abnimmt". Die Teilnehmer sollten eine Grafik von f (i) in ihre Einreichung aufnehmen. Die Wähler können anhand dieses Diagramms und der algorithmischen Ideen im Code abstimmen.
Der Wettbewerb basiert nur auf n1 = 200 / n2 = 400 Parametern! (das gleiche auf der Beispielseite.) Aber hoffentlich werden die Teilnehmer andere Regionen erkunden und auch versuchen, ihre Algorithmen zu verallgemeinern.
Beachten Sie, dass eine Taktik, die hier sehr nützlich sein kann, Algorithmen vom Gradientenabstiegstyp oder genetische Algorithmen sind.
Kann dies alles im Chat für interessierte Teilnehmer weiter diskutieren.
Für einige Schiedsrichter eine weitere Codegolf-Collatz-Herausforderung: Collatz Conjecture (von Doorknob )