introduction
Observons ce tableau: [3, 2, 4, 1, 1, 5, 1, 2]
.
Chaque élément affiche la longueur de la sous-chaîne qui doit être additionnée. Jetons un coup d'œil au premier élément du tableau ci-dessus:
[3, 2, 4, 1, 1, 5, 1, 2]
^
L'élément au premier index est 3 , donc nous prenons maintenant une sous-chaîne de longueur trois avec le même index que la position de départ:
[3, 2, 4]
En résumé, cela donne 9 , donc le premier élément de l'ensemble de sous - chaînes est 9
.
Nous faisons cela pour tous les éléments du tableau:
3 -> [3, 2, 4]
2 -> [2, 4]
4 -> [4, 1, 1, 5]
1 -> [1]
1 -> [1]
5 -> [5, 1, 2]
1 -> [1]
2 -> [2]
Vous pouvez voir que le nombre 5 est un peu un cas étrange. Ce nombre dépasse la longueur du tableau:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
Nous ignorerons tout ce qui dépasse le tableau, nous utilisons donc simplement [5, 1, 2]
.
La dernière étape consiste à tout résumer:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
Et c'est le tableau qui doit être sorti:
[9, 6, 11, 1, 1, 8, 1, 2]
La tâche
Étant donné un tableau non vide avec des entiers positifs (non nuls), affichez l'ensemble de sous - chaînes . C'est du code-golf , donc la soumission avec le plus petit nombre d'octets gagne!
Cas de test
[1, 2, 3, 4, 5] -> [1, 5, 12, 9, 5]
[3, 3, 3, 3, 3, 3, 3, 3] -> [9, 9, 9, 9, 9, 9, 6, 3]
[5, 1, 2, 4, 1] -> [13, 1, 6, 5, 1]
[1] -> [1]
Réponses:
Gelée , 6 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça marche
la source
Python, 40 octets
Testez-le sur Ideone .
la source
Excel, 21 octets
=SUM(OFFSET(A1,,,A1))
Ouvrez une nouvelle feuille de calcul, placez les valeurs de test dans la colonne A. Entrez la formule dans B1 et double-cliquez sur la poignée de cellule pour parcourir la plage.
la source
Python 3, 47 octets
Implémentation assez simple. Le comportement par défaut de Python pour les tranches qui dépassent la fin de la liste était très pratique ici.
la source
Haskell,
34, 33 octetsUn octet enregistré par nimi.
la source
JavaScript ES6, 50 octets
Assez explicite. Il se trouve au-
map
dessus de chaque élément du tableau, obtenant le résultatslice
de cei
ndex via l'index pluse
la valeur de l'élément , etreduce
ing en ajoutant.la source
J, 11 octets
Usage
Explication
la source
JavaScript (ES6), 45
reduce
battu à nouveau!la source
f=
, tout comme dans cette réponse .f=
n'est déjà pas compté dans les 45 octetsRétine , 38 octets
Le nombre d'octets suppose un codage ISO 8859-1.
L'entrée et la sortie sont des listes séparées par des virgules.
Essayez-le en ligne! (La première ligne active une suite de tests séparés par un saut de ligne.)
la source
Mathematica
6055 octetspar exemple
Merci @MartinEnder d'avoir rasé 5 octets :)
la source
#+Tr@Take[x=Rest@x,UpTo[#-1]]&/@(x=#)&
toujours pas sûr qu'il soit optimal mais il économise 17 octets.05AB1E,
118 octetsExplication
Essayez-le en ligne
la source
Pyth , 8 octets
Suite de tests.
Traduction de la réponse d' El en Python .
la source
Erlang, 69 octets
Les fonctions d'ordre supérieur d'Erlang pour les listes ne reçoivent pas l'index de l'élément courant. Cela utilise le dictionnaire de processus pour définir l'index de l'élément en cours.
la source
Pyke,
127 octetsEssayez-le ici!
la source
VBA, 160 octets
la source
Pyth, 6 octets
Suite de tests
Il s'agit d'une solution différente des autres jusqu'à présent. Il boucle sur l'entrée, tranche une somme des valeurs initiales, puis supprime le premier élément de l'entrée stockée et répète.
Explication:
la source
Julia, 39 octets
Essayez-le en ligne!
la source
F #,
8482 octetsla source
JavaScript (ES6) - 79 octets
Une solution récursive qui n'utilise aucune des méthodes de tableau:
Essai:
la source
C #, 89 octets
assez simple
idées d'amélioration appréciées
la source
Brachylog , 27 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Explication
la source
Dyalog APL, 15 octets
ou
la source
Programme PHP, 72 octets
appeler avec
php-cgi -f <filename> 'a[]=3&a[]=2&a[]=4...
+11 en fonction:
+9 sans prédéfinis:
($ c conserve les valeurs d'origine, $ a décompte pour chaque index, $ r obtient les sommes)
-3 comme programme:
la source
q (37 octets)
Exemple:
la source
Matricks , 25 octets
Ouais, enfin un défi pour lequel je n'ai pas besoin de nouvelles fonctionnalités!
Courir avec:
python matricks.py substring.txt [[<input>]] 0
Explication:
la source
Javascript (à l'aide d'une bibliothèque externe) (66 octets)
Lien vers la bibliothèque: https://github.com/mvegh1/Enumerable
Explication du code: _.From charge le tableau d'entrée dans la bibliothèque, qui est essentiellement LINQ pour js. Ensuite, chaque élément du tableau est mappé en fonction du prédicat suivant: prenez l'entrée, puis coupez-la à partir de l'index de l'élément actuel et prenez cet index plus la valeur de l'élément actuel. Résumez ensuite cette sous-séquence. Convertir le résultat en un tableau JS natif et le renvoyer
la source
var
des variables, vous n'en avez pas besoin au golf. Vous pouvez également changer.forEach
à ce.map
qui coûte moins d' octets.Clojure, 63 octets
Utilise la correspondance de modèle pour décomposer l'argument d'entrée dans le premier et le reste des arguments.
la source
MATL ,
171413 octetsExplication
Essayez-le en ligne! Ou vérifiez tous les cas de test (code modifié pour gérer plusieurs entrées).
la source
C #, 94 octets
Où a est un int [] qui représente l'entrée à résoudre.
la source