Rekursive binäre Beschreibung
Kürzlich habe ich meinen ersten Beitrag zu OEIS geleistet, indem ich der Sequenz A049064 eine B-Datei hinzugefügt habe . Die Sequenz beginnt mit 0und die nächsten Werte werden aus einer "binären Beschreibung" des letzten Elements abgeleitet.
Zum Beispiel wäre der zweite Term 10, weil es einen 0im ersten Element gab. Die dritte Amtszeit wäre 1110, weil es eins 1und eins gab 0. Der vierte wäre 11110. denn es gibt drei ( 11in binären!) 1 s und eins 0. Nachfolgend finden Sie eine Aufschlüsselung des fünften Terms, um diesen Prozess zu verdeutlichen:
> 11110
> 1111 0 (split into groups of each number)
> 4*1 1*0 (get count of each number in each group)
> 100*1 1*0 (convert counts to binary)
> 100110 (join each group back together)
Und hier ist ein Beispiel für den Übergang vom 6. zum 7. Semester:
> 1110010110
> 111 00 1 0 11 0
> 3*1 2*0 1*1 1*0 2*1 1*0
> 11*1 10*0 1*1 1*0 10*1 1*0
> 111100111010110
Sie können ein Referenzprogramm φ auschecken, das ich erstellt habe, um die Terme zu berechnen.
Deine Arbeit
Sie müssen ein Programm oder eine Funktion erstellen, die eine Zahl nüber Standardeingabe oder Funktionsargumente aufnimmt und die Sequenz von 1stBegriff zu (n+1)thBegriff, durch einen Zeilenumbruch getrennt, ausgibt. Wenn Sie sich die niedrigeren Zahlen ansehen möchten, können Sie sich auf die B-Datei auf der OEIS-Seite beziehen. Ihr Programm / Ihre Funktion sollte dies jedoch unterstützen 0 <= n <= 30, dh bis zur 31. Amtszeit. Dies ist keine Kleinigkeit, da δA049064(30) mehr als 140.000 Stellen lang ist . Wenn Sie sehen möchten, wie das 31. Semester aussehen soll, habe ich es auf Pastebin gesetzt .
Beispiel I / O
func(10)
0
10
1110
11110
100110
1110010110
111100111010110
100110011110111010110
1110010110010011011110111010110
1111001110101100111001011010011011110111010110
1001100111101110101100111100111010110111001011010011011110111010110
func(0)
0
func(3)
0
10
1110
11110
Es gibt nur eine Regel: Keine Standardlücken!
Das ist Code-Golf , also gewinnt die niedrigste Bytezahl.
φ - Gist gefunden werden kann hier , und eine ideone Demo ist hier .
δ - Nur für den Fall, dass Sie sich wundern sollten, meine Schätzungen für die Länge des 100. Terms haben ergeben, dass es sich um ungefähr 3,28 x 10 250 Zeichen handelt, was für jedermann eine Menge zu berechnen wäre.
[0]\n[1, 0]\n[1, 1, 1, 0]\n...