Betrachten Sie das Array positiver Ganzzahlen:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
Dann verketten Sie sie:
1234567891011121314151617181920212223242526...
Teilen Sie sie dann in Abschnitte variabler Länge auf, wobei jede Länge der N- ten positiven ganzen Zahl entspricht:
[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 ...
Aufgabe
Bei einer Ganzzahl N (positiv für 1-Indizierung oder nicht-negativ für 0-Indizierung) müssen Sie die Summe der Deltas der Ziffern im N- ten Block (die Unterschiede zwischen aufeinanderfolgenden Ziffern) ausgeben .
Sie können entweder 0 oder 1-Indizierung für N wählen .
Die Sequenz muss mit 1 beginnen .
Dies ist Code-Golf , der kürzeste Code in Bytes gewinnt.
Beispiele & Testfälle
1-indizierte Testfälle. Wenn Sie 0-indizierte möchten, verringern Sie einfach N.
N, Chunk, Deltas, Sum
1 -> 1 -> [] -> 0
2 -> 23 -> [1] -> 1
3 -> 456 -> [1, 1] -> 2
4 -> 7891 -> [1, 1, -8] -> -6
5 -> 01112 -> [1, 0, 0,1] -> 2
6 -> 131415 -> [2, -2, 3, -3, 4] -> 4
7 -> 1617181 -> [5, -5, 6, -6, 7, -7] -> 0
8 -> 92021222 -> [-7, -2, 2, -1, 1, 0, 0] -> -7
9 -> 324252627 -> [-1, 2, -2, 3, -3, 4, -4, 5] -> 4
10 -> 2829303132 -> [6, -6, 7, -6, -3, 3, -2, 2, -1] -> 0
Puzzle 2 beim CodeGolf-Hackathon (Ich bin dort auch der ursprüngliche Autor, daher darf ich neu posten). Verwandte, Inspiration . Verwandte .
quelle
Antworten:
JavaScript (ES6),
54535150 Byte1 Byte dank @tsh gespeichert
0-indiziert.
Testfälle
Code-Snippet anzeigen
quelle
k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
APL (Dyalog) , 32 Bytes
Probieren Sie es online!
Wie?
+/⍳⍵
- Summe von1
bisn
⍳
- Machen Sie Reichweite davon' '~⍨⍕
- in eine Zeichenfolge ohne Leerzeichen(+/⍳⍵-1)↓
- Lassen Sie die ersten (Summe von1
bisn-1
) Zeichen fallen⍵↑
- Behalte die nächstenn
Zeichen⍎¨
- mache jedes Zeichen zu einer ganzen Zahl2-⍨/
- Differenzenliste (Rückwärtssubtraktion für jeweils 2 Elemente)+/
- Fass es zusammen.quelle
Schale , 9 Bytes
Probieren Sie es online!
Meine Lösung zum Hackathon.
Erläuterung:
quelle
Haskell ,
61-60BytesProbieren Sie es online!
Erläuterung:
Die Summe der Deltas einer Liste entspricht der Differenz zwischen dem letzten und dem ersten Element.
Das letzte Element (Null-indiziert) ist
t
,triangle(n)-1 = sum[2..n]
. Das erste Element ist dannt-n+1
, da die Listen
Elemente enthält.quelle
Python 2 , 80 Bytes
Probieren Sie es online!
2**n
Das ist natürlich viel zu viel, aber es ist ein Byte kürzer als so etwasn*n+1
.quelle
Mathematica, 71 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
605753 Bytes1-indiziert. Vorherige nicht rekursive 60-Byte-Version:
quelle
05AB1E , 8 Bytes
0-indiziert.
Probieren Sie es online!
quelle
Python 2 , 87 Bytes
Probieren Sie es online!
quelle
Python 2 , 104 Bytes
Probieren Sie es online!
quelle
Perl 6 ,
5855 BytesProbier es aus
Probier es aus
Erweitert:
quelle
PHP ,
163147 BytesProbieren Sie es online!
Mein erster Versuch, Code Golf zu spielen ... habe das Gefühl, dass dies kürzer sein kann
Bearbeiten: 16 Bytes durch Entfernen mehrerer Instanzen gespeichert
quelle
Perl 5 , 79 + 1 (
-p
) = 80 BytesProbieren Sie es online!
quelle
Pyth ,
2927 Bytes2 Bytes gespart dank @ Mr.Xcoder.
Probieren Sie es online!
quelle
Gelee , 14 Bytes
Probieren Sie es online!
Erläuterung
Ich habe ursprünglich mit dem Bereich (n (n + 1) / 2) begonnen, aber da Sie vor dem Schneiden der Liste zusätzliche Ziffern am Ende der Liste haben können, habe ich ihn in den Bereich (n ^ 2) geändert. Sie haben sowieso zusätzliche Ziffern nach 1-9.
quelle
+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣIS
ursprünglicher (erfolgreicher, aber langer) Versuch