Ich möchte Ihnen die GAU-Nummern vorstellen
GAU(1) = 1
GAU(2) = 1122
GAU(3) = 1122122333
GAU(4) = 11221223331223334444
GAU(6) = 11221223331223334444122333444455555122333444455555666666
...
GAU(10) = 11221223331223334444122333444455555122333444455555666666122333444455555666666777777712233344445555566666677777778888888812233344445555566666677777778888888899999999912233344445555566666677777778888888899999999910101010101010101010
Diese Herausforderung ist ziemlich einfach!
Ermitteln Sie bei einer Ganzzahl n> 0 die Anzahl der Stellen von GAU (n).
Beispiel
Lassen Sie uns GAU (4) machen,
wir machen die folgenden Schritte (bis wir zu 4 kommen) und verketten sie
[1][122][122333][1223334444]
Sie müssen jede Zahl so oft schreiben, wie sie wert ist, aber Sie müssen jedes Mal von 1 an zählen
Lassen Sie uns versuchen, GAU (5) zu machen,
wir müssen von 1 bis 1 zählen
[1]
dann von 1 bis 2 (aber jede Zahl so oft wiederholen, wie sie wert ist )
[122]
dann von 1 bis 3
[122333]
dann von 1 bis 4
[1223334444]
und schließlich von 1 bis 5 (dies ist der letzte Schritt, weil wir GAU ( 5 ) finden wollen )
[122333444455555]
Jetzt machen wir alle diese Schritte und verketten sie.
Das Ergebnis ist GAU (5).
11221223331223334444122333444455555
Wir interessieren uns für die Anzahl der Ziffern dieser GAU-Nummern.
Testfälle
Input⟼Output
n ⟼ Length(GAU(n))
1 ⟼ 1
2 ⟼ 4
3 ⟼ 10
10 ⟼ 230
50 ⟼ 42190
100 ⟼ 339240
150 ⟼ 1295790
Dies ist eine Code-Golf- Herausforderung.
Der kürzeste Code in Bytes gewinnt.
Wenn Sie noch Fragen haben, lassen Sie es mich bitte wissen.
Ich möchte wirklich, dass jeder hier dieses magisch-versteckte, komplexe Muster versteht
n ⟼ Length(GUA(n))
, nicht GAU (n).Antworten:
SOGL V0.12 ,
1110875 BytesProbieren Sie es hier aus! - Dies wird voraussichtlich als Funktion aufgerufen, wenn die Eingabe auf dem Stapel und das Eingabefeld leer sind.
7-Byte-Alternative für die Eingabe aus dem Eingabefeld:
Probieren Sie es hier aus!
quelle
push that numbers length without popping the number
niceHaskell , 45 Bytes
Probieren Sie es online!
quelle
Brain-Flak , 166 Bytes
Probieren Sie es online!
Erläuterung
quelle
Schale , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 7 Bytes
Probieren Sie es online!
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2 , 53 Bytes
Probieren Sie es online!
quelle
Schale , 7 Bytes
Probieren Sie es online!
Ungolfed / Erklärung
quelle
Schale , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6),
57-55ByteProbieren Sie es online!
quelle
Python 2 ,
5958 BytesEin anderer lässt dank Jonathan Frech den Staub hinter sich.
Probieren Sie es online!
Nicht kurz, aber was solls.
quelle
len(`i`)*i for
->i*len(`i`)for
.CJam , 20 Bytes
Probieren Sie es online!
Die Nummer wird im Eingabefeld übergeben.
Ungolfed Erklärung: (Beispiel Eingabe = 2)
Es scheint schwer zu sein, wenn es erklärt wird, lol.
quelle
J, 24 Bytes
Ein ähnlicher Ansatz auf hoher Ebene für die APL-Antwort von dzaima, übersetzt in J, mit der Ausnahme, dass wir die Länge der Zahl berechnen, indem wir sie zuerst in eine Zeichenfolge umwandeln, anstatt Protokolle zu erstellen, und Js Hook verwenden, um diese Länge mit der Zahl selbst zu multiplizieren:
(*#@":"0)
. Danach ist es nur die Summe der Scan-Summe.Probieren Sie es online!
quelle
1(#.]*#\*#\.)1#@":@+i.
funktioniert auch für 22 BytesR , 39 Bytes
Überprüfen Sie alle Testfälle!
Einfacher Algorithmus; Ich beobachtete, wie die meisten tat, dass für
i
in1:n
,i
wiederholti*(n-i+1)
Zeiten. Also erstelle ich diesen Vektor, zähle die Anzahl der Zeichen in jedem und summiere sie.quelle
Python 2,
5150 Bytesquelle
JavaScript (ES6),
5042 BytesAktualisiert: jetzt im Grunde genommen eine Portierung dessen, was andere Antworten tun.
Testfälle
Code-Snippet anzeigen
quelle
Mathematica, 66 Bytes
quelle
QBIC , 21 Bytes
quelle
Eigentlich 13 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Japt ,
1211109 BytesProbieren Sie es aus oder testen Sie alle Zahlen von 1 bis 150 .
Erläuterung
Implizite Eingabe einer Ganzzahl
U
.Generieren Sie ein Array von Ganzzahlen von 1 bis
U
und generieren Sie dann Unterarrays von 1 bis zu jeder Ganzzahl.Leiten Sie die Elemente jedes Unterarrays durch eine Funktion.
Konvertieren Sie das aktuelle Element in einen String (
s
), ermitteln Sie dessen Länge (Ê
) und multiplizieren Sie es mit dem Element.Reduzieren Sie das Hauptarray, indem Sie es zu jedem Unterarray hinzufügen.
quelle
Jq 1,5 ,
824943 BytesErweitert
Probelauf
Probieren Sie es online! auch jqplay.org
quelle
Gestapelt , 28 Bytes
Probieren Sie es online!
Einige könnten fragen: "Wann sind Aliase unlesbar?" Wenn dies nicht naheliegt, haben Sie eine sehr liberale Definition von "Lesbarkeit".
Erläuterung
quelle
Ruby ,
41 bis40 BytesProbieren Sie es online!
quelle
C # (.NET Core) ,
948074 BytesProbieren Sie es online!
Ich hatte gehofft, eine direkte Lösung wie die Antwort von @ kamoroso94 zu finden , gab aber auf, da ich zu viel Zeit damit verbrachte. Es gibt wahrscheinlich eine Möglichkeit, dies zu tun, aber die Formel muss für jeden Größenschritt angepasst werden.
Danksagung
14 Bytes gespart dank @someone
Dank @Kevin Cruijssen werden 6 Bytes gespeichert
quelle
n=>{int b=0,a=0,i;for(;a++<n;)for(i=0;i++<a;)b+=i.ToString().Length*i;return b;}
Probieren Sie es online! für 80 Bytes und Leistung.i.ToString()
kann sein(i+"")
, etwas mehr Bytes zu sparen.MATL , 15 Bytes
Probieren Sie es online!
Erläuterung:
quelle
:ttP*Y"VXzn
Perl 6 , 36 Bytes
Probier es aus
Erweitert:
quelle
Holzkohle ,
1814 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: Mit
Sum
mir 4 Bytes gespeichert. Erläuterung:quelle
Σ
stattdessen gedruckt ...Sum
sind immer noch 18 Bytes:Print(Cast(Sum(Map(InclusiveRange(1, InputNumber()), Sum(Map(InclusiveRange(1, i), Times(l, Length(Cast(l)))))))));
Incremented
: P≔⊕NθIΣEθ×⁻θι×ιLIι
. Verwenden Sie jedochIncremented
stattInclusiveRange
Rasuren 4 Bytes aus meinem vorherigen Kommentar!Ohm v2 , 7 Bytes
Probieren Sie es online!
quelle
[Dyalog APL],
2220 BytesProbieren Sie es online!
Erläuterung:
quelle
Röda , 31 Bytes
Probieren Sie es online!
quelle