Führen Sie die folgenden Schritte aus, wenn Sie eine streng positive Ganzzahl n angeben:
- Erstellen Sie ein Array A mit n 1 s.
- Wenn A nur ein Element hat, beenden Sie. Ansonsten, beginnend mit dem ersten Element, ersetze jedes Paar von A durch seine Summe, lasse das letzte Element so wie es ist, wenn die Länge von A ungerade ist, und wiederhole diesen Schritt.
Die Ausgabe sollte nach jedem Schritt vom ersten bis zum letzten Schritt den Status von A enthalten . Die Verwendung von Standardlücken ist untersagt. Dies ist eine Code-Golf- Herausforderung, daher gewinnt die Lösung mit den wenigsten Bytes in jeder Sprache.
Testfälle
Jede Zeile in der Ausgabe dieser Beispiele ist ein Zustand. Sie können in jedem vernünftigen Format ausgeben.
Eingang: 1
[1]
Eingang: 4
[1, 1, 1, 1]
[2, 2]
[4]
Eingang: 13
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[2, 2, 2, 2, 2, 2, 1]
[4, 4, 4, 1]
[8, 5]
[13]
Eingang: 15
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[2, 2, 2, 2, 2, 2, 2, 1]
[4, 4, 4, 3]
[8, 7]
[15]
code-golf
arithmetic
Erik der Outgolfer
quelle
quelle
Antworten:
05AB1E , 7 Bytes
Probieren Sie es online!
quelle
MATL , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 3 , 57 Bytes
Probieren Sie es online!
Python 2 , 51 Bytes
Probieren Sie es online!
-6 bytes gesamt dank tsh
Rekursive Funktion. Für jeden Schritt wird eine Liste der Potenzen von erstellt
2
, sodass die Summe kleiner oder gleich der angegebenen Ganzzahl ist. Der Rest wird dann angehängt, wenn er größer als ist0
.quelle
def f(i,j=1):l=i//j*[j]+[i%j][:i%j];print(l);i>j and f(i,j*2)
:; Python 2 55 Bytes:def f(i,j=1):l=i/j*[j]+[i%j][:i%j];print l;i>j>f(i,j*2)
i>j
hat in meiner vorherigen Lösung nicht funktioniert und ich habe vergessen, es danach zu versuchen.Gelee , 6 Bytes
Probieren Sie es online!
quelle
R , 65 Bytes
-1 Byte danke an Giuseppe.
Probieren Sie es online!
%/%
%%
k=2^i
n%/%k
k
n%%k
Hier verwende ich
T
stattdessenk
, da es so initialisiertTRUE
ist, dass es in 1 konvertiert wird. Ich muss trotzdem drucken,+T
anstattT
einen Vektor vonTRUE
s in der Ausgabe zu vermeiden .quelle
+T
ist kürzer alsT+0
Pyth , 10 Bytes
Probieren Sie es online!
-1 Byte dank FryAmTheEggman
quelle
JavaScript (V8) , 109 Byte
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) ,
5554 BytesProbieren Sie es online!
SchließlichSow
/Reap
schlägt eine Alternative!Gibt eine Singleton-Liste mit einer Liste der Schritte zurück.
quelle
K (oK) ,
15 bis17 BytesProbieren Sie es online!
quelle
J , 20 Bytes
Probieren Sie es online!
-2 Bytes dank Bubbler
quelle
[:
und()
.Gelee , 6 Bytes
-1 Byte dank Erik dem Outgolfer .
Probieren Sie es online!
quelle
JavaScript, 55 Bytes
Probieren Sie es online!
Dies ist im Grunde die Golfversion der folgenden Codes:
quelle
Japt
-R
, 13 BytesVersuch es
quelle
Brachylog , 17 Bytes
Probieren Sie es online!
So furchtbar lang dies ist, ich fühle mich immer noch ein bisschen schlau für die Verwendung
.ẉȮ
: die offensichtliche Art, etwas zu drucken, dann überprüfe, ob seine Länge 1ẉ₂l1
istẉ₂~g
, oder obẉ₂≡Ȯ
die≡
in der letzten notwendig ist, weil sieẉ₂
ihre Eingabe und Ausgabe vereint bevor er druckt sie undȮ
wird vorab mit beschränktem eine Liste der Länge 1 zu sein , so scheitert die Einigung , wenn der Eingang 1. Am Ende eines Prädikats nicht eine Liste der Länge ist, ist diese Funktion vonẉ₂
kann jedoch umgangen werden, indem man Verwenden der Ausgabevariablen anstelle von Subskriptionẉ
:.ẉȮ
Vereinheitlicht zuerst ihre Eingabe mit der Ausgabevariablen, druckt dann die Ausgabevariable und vereinheitlicht anschließend die Ausgabevariable mitȮ
.quelle
Stax , 10 Bytes
Führen Sie es aus und debuggen Sie es
Verfahren:
Kommentierte Quelle:
quelle
Holzkohle , 19 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Verwendet das Standardausgabeformat von Charcoal (eine Zahl pro Zeile), wobei die Subarrays einen doppelten Abstand voneinander haben. Erläuterung:
quelle
Perl 5 , 46 Bytes
Probieren Sie es online!
Die Ausgabe ist Raum getrennt.
quelle
Perl 6 , 38 Bytes
Probieren Sie es online!
Es gibt eine Abkürzung zum partiellen Rotoring, an die ich mich momentan nicht erinnere ...
Erläuterung:
quelle
Haskell , 75 Bytes
Probieren Sie es online!
Funktioniert rückwärts von der Liste
[n]
bis eine Liste mit nur einer Liste erreicht ist.Wenn ich vorwärts gehe, könnte ich 80 Bytes erhalten, indem ich verwende
chunksof
vonData.List.Split
:Probieren Sie es online!
quelle
Ohm v2 , 8 Bytes
Probieren Sie es online!
Wenn die Ausgabe in wissenschaftlicher Notation zulässig ist, gilt Folgendes:
Ohm v2 , 9 Bytes
Probieren Sie es online!
quelle
Gaia , 12 Bytes
Probieren Sie es online!
quelle