Polizistenthread
In diesem Thread besteht Ihre Aufgabe darin, ein rekursionsbasiertes Programm / eine rekursionsbasierte Funktion zum Generieren beliebiger ganzzahliger Reihen zu erstellen. Räuber werden versuchen, eine kürzere nicht-rekursive Lösung im Räuber-Thread zu finden .
Inhaltsangabe der Challenge
In vielen Sprachen können rekursive Funktionen eine Programmieraufgabe erheblich vereinfachen. Der Syntax-Overhead für eine ordnungsgemäße Rekursion kann jedoch die Verwendbarkeit in Code-Golf einschränken.
Die Cops erstellen ein Programm oder eine Funktion, die eine einzelne Ganzzahl verwendet nund die ersten nEinträge einer Ganzzahlserie generiert , wobei nur die Rekursion 1 verwendet wird . Sie sollten auch sicherstellen, dass es eine kürzere nicht-rekursive Möglichkeit gibt, die Sequenz zu generieren, um ihren Eintrag als sicher zu kennzeichnen.
Die Räuber werden versuchen, ein kürzeres Programm oder eine kürzere Funktion in derselben Sprache zu finden und dabei dieselbe Ganzzahlserie ohne Rekursion 2 zu erzeugen .
Wenn die Vorlage der Polizei nicht innerhalb von zehn Tagen (240 Stunden) geknackt wird, wird der Polizist nachweisen, dass es tatsächlich möglich war, einen kürzeren nicht-rekursiven Ansatz zu verfolgen, indem er seine eigene Lösung enthüllt. Sie können dann ihre Einreichung als sicher markieren .
Der Gewinner der Cops Challenge ist die kürzeste (laut Code-Golf ) rekursionsbasierte Einsendung, die als sicher eingestuft wird.
Der Gewinner der Räuberherausforderung wird der Räuber sein, der die meisten Lösungen geknackt hat.
1: Es muss nur in der Syntax rekursiv sein; Sie müssen sich zum Beispiel keine Gedanken über die Optimierung von Tail Calls machen.
2: Wieder nicht rekursiv in der Syntax; Sie können also dank der Tail-Call-Optimierung keine rekursive Lösung veröffentlichen und behaupten, dass sie zu einer Schleife kompiliert wurde.
Anforderungen für die Vorlage
Für jede Übermittlung wird eine einzelne Ganzzahl n(null- oder einsbasiert) verwendet. Die Übermittlung wird dann die ersten nEinträge einer ganzzahligen Reihe der Wahl ausgeben oder zurückgeben . (Beachten Sie, dass diese Ganzzahlserie nicht davon abhängen darf n). Die Eingabe- und Ausgabemethode kann sich zwischen dem rekursiven und dem nicht rekursiven Ansatz unterscheiden. Die ganzzahlige Reihe kann jede deterministische Reihe mit einer Länge von mindestens 5 sein. Die Reihe sollte richtig erklärt werden.
Ihre Einreichung muss nicht für beliebig große nfunktionieren, sollte aber zumindest funktionieren n=5. Der nicht-rekursive Ansatz muss in der Lage sein, mindestens den gleichen Wert nwie der rekursive Ansatz oder den n=2^15-1kleineren zu erreichen.
Rekursion
Um dieser Herausforderung willen wird Rekursion so definiert, dass die gewünschte Sequenz mit einer Funktion (oder einem funktionsähnlichen Konstrukt) erstellt wird, die sich selbst aufruft (oder eine Folge von Funktionen aufruft, die sich letztendlich selbst aufruft; dazu gehören Konstrukte wie der Y-Kombinator). Die Rekursionstiefe sollte unendlich sein, ebenso nwie unendlich. Der nicht rekursive Ansatz ist alles, was nicht rekursiv ist.
nwenn er theoretisch korrekt ist, aber aus Zeit- oder Speichergründen nicht ausgeführt werden kann?
n=5muss berechnet werden
xforsei denn, dies ist durch einen Import möglich?). Daher kann diese Sprache möglicherweise nicht mithalten.
forwird rekursiv hinter, istforrekursiv oder Schleife getan ?