Considérez le tableau d'entiers positifs:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
Ensuite, concaténez-les:
1234567891011121314151617181920212223242526...
Et puis les diviser en morceaux de longueur variable, chaque longueur étant égale au N ème entier positif:
[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 ...
Tâche
Étant donné un entier N (positif pour l'indexation 1 ou non négatif pour l'indexation 0), votre tâche consiste à générer la somme des deltas des chiffres dans le N ème bloc (les différences entre les chiffres consécutifs).
Des failles interdites par défaut s'appliquent.
Les méthodes d'entrée et de sortie standard s'appliquent.
Vous pouvez choisir 0 ou 1-indexation pour N .
La séquence doit commencer par 1 .
C'est le code-golf , le code le plus court en octets gagne.
Exemples et cas de test
Cas de test indexés 1. Si vous voulez des index 0, décrémentez simplement 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 sur CodeGolf-Hackathon (je suis l'auteur original là aussi, donc je suis autorisé à republier). Connexes, Inspiration . Connexes .
la source
Réponses:
JavaScript (ES6),
54535150 octets1 octet enregistré grâce à @tsh
0 indexé.
Cas de test
Afficher l'extrait de code
la source
k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
APL (Dyalog) , 32 octets
Essayez-le en ligne!
Comment?
+/⍳⍵
- somme de1
àn
⍳
- faire de la gamme de cela' '~⍨⍕
- en chaîne, sans espaces(+/⍳⍵-1)↓
- supprimer d'abord (somme des1
ton-1
) caractères⍵↑
- garder les prochainsn
caractères⍎¨
- transformer chaque caractère en entier2-⍨/
- liste des différences (soustraction en arrière pour tous les 2 éléments)+/
- résumer.la source
Coque , 9 octets
Essayez-le en ligne!
Ma solution au Hackathon.
Explication:
la source
Haskell ,
6160 octetsEssayez-le en ligne!
Explication:
La somme des deltas d'une liste est la même que la différence entre le dernier et le premier élément.
Le dernier élément (zéro indexé) est
t
,triangle(n)-1 = sum[2..n]
. Le premier élément est donct-n+1
, car la liste a desn
éléments.la source
Python 2 , 80 octets
Essayez-le en ligne!
2**n
est beaucoup trop exagéré, bien sûr, mais c'est un octet plus court que quelque chose comme çan*n+1
.la source
Mathematica, 71 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
605753 octets1 indexé. Version précédente non récurrente de 60 octets:
la source
05AB1E , 8 octets
0 indexé.
Essayez-le en ligne!
la source
Python 2 , 87 octets
Essayez-le en ligne!
la source
Python 2 , 104 octets
Essayez-le en ligne!
la source
Perl 6 ,
5855 octetsEssaye-le
Essaye-le
Étendu:
la source
PHP ,
163147 octetsEssayez-le en ligne!
Ma première tentative de golf à code ... j'ai le sentiment que cela peut être plus court
Edit: économisé 16 octets en supprimant plusieurs instanciations
la source
Perl 5 , 79 + 1 (
-p
) = 80 octetsEssayez-le en ligne!
la source
Pyth ,
2927 octetsEnregistré 2 octets grâce à @ Mr.Xcoder.
Essayez-le en ligne!
la source
Gelée , 14 octets
Essayez-le en ligne!
Explication
J'ai d'abord commencé par prendre la plage (n (n + 1) / 2) mais comme vous pouvez avoir des chiffres supplémentaires à la fin de la liste avant de la découper, je l'ai changé en plage (n ^ 2). Vous avez quand même des chiffres supplémentaires après 1-9.
la source
+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣIS
tentative originale (réussie mais longue)