Definition
Definieren Sie das n- te Array der CURR-Sequenz wie folgt.
Beginnen Sie mit dem Singleton-Array A = [n] .
Ersetzen Sie für jede Ganzzahl k in A den Eintrag k durch k natürliche Zahlen und zählen Sie dabei von 1 bis k auf .
Wiederholen Sie den vorherigen Schritt n - 1 weitere Male.
Wenn beispielsweise n = 3 ist , beginnen wir mit dem Array [3] .
Wir ersetzen 3 durch 1, 2, 3 und erhalten [1, 2, 3] .
Wir ersetzen jetzt 1 , 2 und 3 durch 1 ; 1, 2 und 1, 2, 3 (bzw.), was [1, 1, 2, 1, 2, 3] ergibt .
Schließlich führen wir die gleichen Ersetzungen wie im vorherigen Schritt für alle sechs Ganzzahlen im Array durch und ergeben [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . Dies ist das dritte CURR-Array.
Aufgabe
Schreiben Sie ein Programm einer Funktion, die bei einer streng positiven Ganzzahl n als Eingabe das n- te CURR-Array berechnet .
Die Ausgabe muss eine flache Liste sein (und ein von einer Funktion zurückgegebenes Array, eine Zeichenfolgendarstellung der Array-Syntax Ihrer Sprache, durch Leerzeichen getrennt usw.).
Das ist Code-Golf . Möge der kürzeste Code in Bytes gewinnen!
Testfälle
1 -> [1]
2 -> [1, 1, 2]
3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]
[2]
) anstatt als Ganzzahl verwenden?Antworten:
Gelee, 3 Bytes
Probieren Sie es online aus
Erläuterung
quelle
Python, 50 Bytes
Umfang Missbrauch! Beispielsweise wird für
i=3
die auszuwertende Zeichenfolge auf erweitert.Trotz der Verwendung der Funktionseingabevariable
i
für alles unterscheidet Python irgendwie jeden Iterationsindex als zu einem separaten Bereich gehörend, als ob der Ausdruck wäremit
i
der Eingabe in die Funktion.quelle
eval
, offensichtlich muss der Code selbst portiert werden, aber ich dachte, Sie könnten das trotzdem annehmen.05AB1E,
63 BytesErklärt
Probieren Sie es online aus
3 Bytes gespart dank @Adnan
quelle
DFL
ist 3 Bytes kürzer :)Retina , 33 Bytes
Ein- und Ausgabe in unary.
Probieren Sie es online!
Obwohl ich das geschlossene Formular für die damit verbundene Herausforderung nicht verwendet habe, war es überraschend schwierig, diese Antwort anzupassen.
quelle
+%(M!&
ist das längste Tag, das ich jemals sehen würde.Python 2, 82 Bytes
Dies ist nicht die kürzeste Lösung, zeigt aber eine interessante Methode:
2^(2*n-1)
Zahlen binär aufn
diejenigenquelle
Eigentlich 9 Bytes
Probieren Sie es online!
Erläuterung:
Vielen Dank an Leaky Nun für ein Byte und Inspiration für weitere 2 Byte.
quelle
;#@"♂R♂i"*ƒ
speichert ein Byte;#@`♂R♂i`n
spart noch einen!128 Bytes
quelle
using static System.Linq.Enumerable
können Sie dies tun:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
APL, 11 Bytes
Prüfung:
Erläuterung:
+⍵
: beginnend mit⍵
,⍣⍵
: mache die folgenden⍵
Zeiten:⍳¨∘∊
: Reduzieren Sie die Eingabe und erstellen Sie dann eine Liste [1..N] für jedes N in der Eingabe∊
: das Ergebnis davon abflachenquelle
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
und mir dann überlegt, wie ich diese Zahnspangen loswerden kann.CJam, 14 Bytes
Teste es hier.
Erläuterung
quelle
Mathematica,
2726 Bytes1 Byte gespeichert mit etwas Inspiration von Essaris Antwort.
Ziemlich einfach: für die Eingabe
x
beginnen wir mit{x}
und dann die Anwendung ,Range
um esx
mal (Range
istListable
was bedeutet , dass es gilt automatisch für die ganzen Zahlen innerhalb beliebig verschachtelt Listen). Am EndeFlatten
das Ergebnis.quelle
Clojure, 59 Bytes
Erläuterung:
Wirklich direkter Weg, um das Problem zu lösen. Von innen heraus arbeiten:
quelle
Python 3,
7574 BytesDies ist nur eine einfache Übersetzung der Problembeschreibung in Code.
Bearbeiten: Ein Byte dank @Dennis gespeichert.
quelle
print
kannst nach draußen gehenexec
.[k]
aus irgendeinem Grund gedruckt . Ich gab den Versuch auf, herauszufinden, ob es sich um ein Scope-Problem oder etwas anderes handelte.R
6049 BytesZiemlich unkomplizierte Verwendung von
unlist
undsapply
.Vielen Dank an @MickyT für das Speichern von 11 Bytes
quelle
seq
, um diephp 121
Nicht wirklich viele Tricks stecken dahinter. Das Reduzieren eines Arrays in PHP ist nicht kurz, daher ist es notwendig, es zunächst flach zu bauen
quelle
<?
oder 6 Bytes mit-r
und ohne Tag speichern .Haskell, 33 Bytes
Danke an nimi für das Speichern eines Bytes.
Eine pointfree Version ist länger (35 Bytes):
quelle
iterate(>>= \a->[1..a])
für ein Byte weniger.JavaScript (Firefox 30-57),
63 bis60 BytePort von @ xnors Python-Antwort.
quelle
SyntaxError: missing : in conditional expression
) und Babel (Unexpected token (1:21)
) versucht . Was mache ich falsch?)
irgendwie so aus, als hätte sich ein Streuner in diese Version eingeschlichen.J, 18 Bytes
Einfacher Ansatz basierend auf dem in der Herausforderung beschriebenen Prozess.
Verwendung
Erläuterung
quelle
Pyth, 8 Bytes
Probieren Sie es online!
quelle
Gelee, 7 Bytes
Schnell, bevor Dennis antwortet (jk)
Probieren Sie es online!
quelle
F #, 63 Bytes
Gibt eine anonyme Funktion zurück, die n als Eingabe verwendet.
Ersetzt jeden Eintrag k in A durch [1..k], wiederholt den Vorgang n-mal, beginnend mit A = [n].
quelle
Schnelle 3, 58 Bytes
Soll direkt auf einem Spielplatz laufen, wobei n auf den Eingang gesetzt ist:
Ungolfed, wobei die meisten Kurznotationen rückgängig gemacht wurden:
quelle
Java, 159 Bytes
Verfahren
Verwendung
Beispielausgabe:
quelle
Python 2,
696866 BytesBearbeiten: 1 Byte dank @xnor gespeichert. 2 Bytes gespart dank @ Dennis ♦.
quelle
exec
. In Python 2 ist es ein Schlüsselwort, keine Funktion. Ich zähle übrigens 68 Bytes.Bash + GNU-Dienstprogramme, 49
Weitergeleitete rekursive Funktionen FTW!
n
wird auf der Kommandozeile übergeben. Die Ausgabe ist durch Zeilenumbrüche getrennt.Die Verwendung von
dd
bewirkt, dass Statistiken an STDERR gesendet werden. Ich denke, das ist in Ordnung, aber wenn nicht,dd
kann gegencat
einen Aufpreis von 1 extra Byte ausgetauscht werden .quelle
{...;}
mit(...)
einem Byte zu speichern.Perl 5, 53 Bytes
Ein Unterprogramm:
Sehen Sie es in Aktion als
quelle
Ruby, 61 Bytes
quelle
PHP,
10098 BytesLaufen Sie mit
php -r '<code>' <n>
.Erstellen Sie in jeder Iteration eine temporäre Kopierschleife von 1 .. (erster entfernter Wert) bis
$a
leer.Diese beiden sind noch und werden wahrscheinlich bei 100 Bytes bleiben:
In jeder Iterationsschleife rückwärts durch das Array, wobei jede Zahl durch einen Bereich ersetzt wird.
In jeder Iterationsschleife durch das Array wird der Index um die vorherige Nummer erhöht und jedes indizierte Element durch einen Bereich ersetzt
quelle