introduction
Pour cet exemple, prenons la chaîne Hello, World!
et le tableau [3, 2, 3]
. Pour trouver la chaîne de sous-chaîne, nous passons par le processus suivant:
Le premier nombre du tableau est 3
, donc nous obtenons la sous-chaîne [0 - 3]
, qui est Hel
. Après cela, nous supprimons les premiers 3
caractères de la chaîne initiale, ce qui nous laisse lo, World!
.
Le deuxième nombre du tableau est 2
, donc nous obtenons la sous-chaîne [0 - 2]
de notre nouvelle chaîne, ce qui nous donne lo
. La chaîne restante devient , World!
.
Le dernier chiffre est un 3
, ce qui nous donne , W
. La chaîne de sous-chaîne est l'ensemble des sous-chaînes combinées, ce qui nous donne:
['Hel', 'lo', ', W']
Pour un exemple plus visuel:
[3, 2, 3], 'Hello, World!'
3 -> Hel
2 -> lo
3 -> , W
La tâche
Étant donné une chaîne non vide et un tableau non vide composé uniquement d' entiers positifs ( > 0
), affichez la chaîne de sous-chaîne . Vous pouvez supposer que la somme de tous les entiers du tableau ne dépasse pas la longueur de la chaîne.
Vous pouvez également supposer que les chaînes ne contiendront jamais de nouvelles lignes.
Cas de test
Input: abcdefghijk, [2, 1, 3]
Output: ['ab', 'c', 'def']
Input: Code Golf, [4, 1]
Output: ['Code', ' ']
Input: Ayyy, [3]
Output: ['Ayy']
Input: lexicographically, [2, 2, 2, 7, 4]
Output: ['le', 'xi', 'co', 'graphic', 'ally']
C'est du code-golf , donc la soumission avec le plus petit nombre d'octets gagne!
Python 2, 42 octets
Parfois, vous le faites simplement d'une manière ennuyeuse.
la source
Brachylog ,
2013 octetsEssayez-le en ligne!
Ceci est extrêmement inefficace et expire sur TIO pour le dernier cas de test.
Explication
Une version légèrement plus efficace, 15 octets
la source
Python 3, 45 octets
Cette imprime une ligne par sous - chaîne et se termine par une erreur lors d' une est épuisé.
Testez - le sur repl.it .
la source
Python,
52, 46 octetsUne fonction lambda récursive.
Merci à Dennis d'avoir rasé 6 octets!
la source
Gelée , 6 octets
Essayez-le en ligne!
la source
Haskell, 34 octets
Exemple d'utilisation:
"lexicographically" # [2,2,2,7,4]
->["le","xi","co","graphic","ally"]
Récursivité simple.
Ou la solution ennuyeuse de 29 octets via intégrée:
la source
Rubis, 26 octets
Les chaînes sont représentées sous forme de tableaux de caractères.
la source
PowerShell v2 +, 46 octets
Prend la chaîne
$a
et le tableau d' entrée$b
, boucle$b
. Chaque itération effectue une tranche de tableau en$a
fonction de$i
(par défaut$null
, ou0
) et du nombre actuel. Doit faire le-1
et$i++
car les chaînes dans PowerShell sont indexées à zéro.Exemples
(La sortie ici est séparée par des espaces, car c'est la méthode de stringification par défaut pour les tableaux)
la source
Perl, 28 octets
Comprend +1 pour
-n
Exécutez avec la chaîne d'entrée sur STDIN suivie de chaque numéro sur une ligne distincte:
Juste le code:
La version de 23 octets sans
||"^"
aussi sorte de travaux, mais imprime de nouvelles lignes de queue parasites"^"
peut être remplacé par$_
si la chaîne ne contient pas de méta caractères regexla source
MATL , 8 octets
Essayez-le en ligne!
Explication
la source
JavaScript (ES6),
393835 octetsSauvegardé 3 octets grâce à ETHproductions:
Exemple:
Solution précédente:
38 octets grâce à Huntro:
39 octets:
la source
.slice
enregistre quelques octets:s=>a=>a.map(v=>s.slice(t,t+=v),t=0)
Lot, 74 octets
Je bat C? Ça ne peut pas être vrai! Prend la chaîne sur STDIN et le tableau comme arguments de ligne de commande.
la source
Java, 119 octets
Golfé:
J'ai modifié la réponse de Roman Gräf ( /codegolf//a/93992/59935 ), mais je n'ai pas assez de représentant pour commenter.
J'ai changé l'implémentation de la boucle et au lieu de définir la chaîne source sur une autre sous-chaîne à chaque itération, je change simplement les indices avec lesquels j'obtiens la sous-chaîne.
la source
Pyke, 10 octets
Essayez-le ici!
la source
sed (82 + 2 pour -rn) 84
La première ligne d'entrée est la chaîne. Ensuite, chaque ligne après cela est la taille d'une sous-chaîne unaire .
Exemple:
la source
CJam , 11 octets
Essayez-le en ligne!
Explication
la source
C, 81 octets
Parce que la
write()
sortie n'est pas mise en mémoire tampon, tout compilateur en ligne aura du mal à sortir cela.test.c :
Sortie sans tuyauterie:
la source
PHP, 98 octets
Usage:
Sortie:
Il y a probablement une meilleure solution avec PHP.
la source
PHP, 82 octets
Prend l'entrée sous forme de chaîne, puis une liste de nombres, la sortie est séparée par de nouvelles lignes. par exemple
Si vous faites partie de ces personnes capables d'utiliser $ argv avec -r, vous pouvez enregistrer les 6 octets utilisés pour la balise d'ouverture.
la source
$argv[++$i]
. Pourquoi pas$argv[1]
et$argv[2]
?$argv[2]
parce que nous devons parcourir les arguments supprimés et c'est$argv[++$i]
la première fois pour éviter le besoin d'un,$i=1
et donc économiser 2 octets.PHP, 63 octets
Sortie sous forme de tableau 85 octets
la source
Pyth, 7 octets
Prend les entrées séparées par un retour à la ligne, avec la chaîne non échappée et venant après le tableau. Essayez-le en ligne!
Explication:
la source
Octave / MATLAB, 31 octets
Il s'agit d'une fonction anonyme avec des entrées
s
: chaîne;a
: tableau numérique.Essayez-le chez Ideone .
Explication
Ceci est un portage de ma réponse MATL.
la source
Java 142 octets
Golfé:
la source
Awk, 36 caractères
Exemple d'exécution:
Dans la vraie vie, je l'utiliserais comme ça, juste aucune idée de comment calculer son score:
la source
Dyalog APL 16.0, 15 caractères (non concurrents); 15,0, 17 octets
16.0 solution
Dyalog APL 16.0 ajoute la primitive de partition d'APL2,,
⊂
avec le glyphe⊆
.15.0 solution:
TryAPL en ligne!
la source
GNU sed, 55 + 2 (drapeaux rn) = 57 octets
Essayez-le en ligne! (merci à @Dennis d'avoir ajouté sed)
Explication: La chaîne d'entrée doit être sur la première ligne et les nombres, en unaire , sur des lignes distinctes après cela. Une nouvelle ligne est lue implicitement au début d'un cycle, exécutant le script à chaque fois.
Test: utilisation d'un document ici avec EOF comme marqueur de fin
Sortie:
la source
Vimscript,
7978 octetspas très joli, je suis sûr qu'il peut être amélioré ...
Prend un tampon vim, puis appelle
echom string(A([2,3]))
pour voir la sortieJ'ai pensé à tricher et à sortir la chaîne
["abc", "def"]
... Mais j'ai résisté: PExplication: Supprimez (place dans le registre par défaut) chaque tableau des éléments des quantités de caractères et l'ajoute au tableau
r
... Une réponse ennuyeuse en effet.la source
Lisp commun,
7876 octetsEn supposant que la fonction anonyme est autorisée:
Usage
Sortie
-2 octets en utilisant
as
au lieu deand
et en changeant la définition de y pour ajuster les parenthèses entre deux variables dans(subseq ...)
la source
Rebol, 38 octets
la source