Betrachten Sie den folgenden Prozess:
Nehmen Sie eine nicht negative ganze Zahl N.
zB N =
571Drücken Sie es binär ohne führende Nullen aus. (Null selbst ist die einzige Ausnahme, immer
0.)zB
571=1000111011in binärTeilen Sie aufeinanderfolgende Reihen von Einsen und Nullen in dieser binären Darstellung auf.
zB
1000111011→1,000,111,0,11Sortieren Sie die Läufe von der längsten zur kürzesten.
zB
1,000,111,0,11→000,111,11,1,0Überschreiben Sie alle Ziffern in jedem Lauf mit abwechselnden
1und0, immer beginnend mit1.zB
000,111,11,1,0→111,000,11,0,1Verketten Sie das Ergebnis, um eine neue Binärzahl zu erhalten.
zB
111,000,11,0,1→1110001101=909in dezimal
Wenn Sie die Werte zeichnen, die durch diesen Prozess erzeugt werden, erhalten Sie ein hübsches Diagramm:
Und es ist hoffentlich klar, warum ich die resultierende Sequenz als Temple Skyline-Sequenz bezeichne :
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine nicht negative Ganzzahl N aufnimmt und die entsprechende Temple Skyline-Sequenznummer ausgibt oder zurückgibt. Ihre Eingabe und Ausgabe sollten beide dezimal sein.
zB wenn der eingang 571der ausgang sein soll 909.
Der kürzeste Code in Bytes gewinnt.
Als Referenz sind hier die Ausdrücke in der Reihenfolge von N = 0 bis 20:
0 1
1 1
2 2
3 3
4 6
5 5
6 6
7 7
8 14
9 13
10 10
11 13
12 12
13 13
14 14
15 15
16 30
17 29
18 26
19 25
20 26


.BQanstelle von verwendenjQ2, was bedeutet, dass Sie den Abstand zwischen dem8und dem vorhergehenden verlieren können2.