Betrachten Sie den folgenden Prozess:
Nehmen Sie eine nicht negative ganze Zahl N.
zB N =
571
Drücken Sie es binär ohne führende Nullen aus. (Null selbst ist die einzige Ausnahme, immer
0
.)zB
571
=1000111011
in binärTeilen Sie aufeinanderfolgende Reihen von Einsen und Nullen in dieser binären Darstellung auf.
zB
1000111011
→1
,000
,111
,0
,11
Sortieren 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
1
und0
, immer beginnend mit1
.zB
000
,111
,11
,1
,0
→111
,000
,11
,0
,1
Verketten Sie das Ergebnis, um eine neue Binärzahl zu erhalten.
zB
111
,000
,11
,0
,1
→1110001101
=909
in 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 571
der 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
.BQ
anstelle von verwendenjQ2
, was bedeutet, dass Sie den Abstand zwischen dem8
und dem vorhergehenden verlieren können2
.