Étant donné l'entrée d'une liste de tranches d'une chaîne, sortez la chaîne d'origine.
Chaque tranche sera donnée sous la forme d'une liste de longueur 2, contenant la position de départ de la tranche (un entier ≥0) et la tranche elle-même. Si votre langue ne prend pas en charge les tableaux de types arbitraires, vous pouvez également prendre cela comme une structure ou similaire, ou simplement une chaîne composée du nombre, d'un espace, puis de la tranche.
L'ordre des deux éléments de chaque tranche dépend de vous. En outre, si vous choisissez d'utiliser la représentation des tranches comme un tableau de longueur 2, vous pouvez prendre l'entrée comme un tableau bidimensionnel ou un tableau plat unique. Enfin, l'entier représentant la position peut être indexé zéro ou indexé un (tous les exemples ici sont indexés zéro).
L'entrée sera toujours suffisante pour déterminer la chaîne entière jusqu'à la position la plus élevée donnée. Autrement dit, il n'y aura pas de "trous" ou "lacunes". Par conséquent, la sortie ne doit contenir aucun caractère de fin ou de début supplémentaire (autre que la nouvelle ligne de fin facultative typique). L'entrée sera toujours cohérente et aucune tranche n'entrera en conflit les unes avec les autres.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
Cas de test:
In Out
-----------------------------------------------------------
[[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG
[[0, "foobarbaz"]] | foobarbaz
[[0, "foobar"], [6, "baz"]] | foobarbaz
[[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz
[[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
Réponses:
Gelée,
109 octetsEssayez-le en ligne!
Comment ça marche
la source
Python 2, 49 octets
Tout d'abord, aligne les cordes en remplissant leurs décalages avec des espaces (représentés comme des traits de soulignement pour plus de clarté)
Ensuite, utilise
map
tozip
et prend le maximum de chaque colonne, ce qui ignore les plus petites valeurs d'espaces (le plus petit caractère imprimable) etNone
s où certaines chaînes étaient trop courtes.Enfin,
''.join
à une chaîne en utilisant l'[2::5]
astuce.la source
Perl, 25
+2 ajouté pour
-lp
Obtenez l'entrée de STDIN, par exemple
(Fermez avec ^ D ou ^ Z ou tout ce qui ferme STDIN sur votre système)
slices.pl
:la source
v0
vous sauver deux octets (parce que vous pourriez également omettre l'espace avant lex
)? Edit: Hm, non, quand je l'ai essayé, j'ai euCan't locate object method "x" via package "2"
(ou quel que soit le numéro sur ma première ligne) pour une raison quelconque.JavaScript (ES6), 61 octets
Edit: 4 octets enregistrés grâce à @ edc65.
la source
Haskell, 57 octets
Exemple d'utilisation:
Comment ça marche: faire des paires de
(index,letter)
pour chaque lettre de chaque tranche, concaténer en une seule liste, supprimer les doublons, trier par index, supprimer les index.la source
MATL , 15 octets
Fonctionne avec la version actuelle (13.0.0) du langage / compilateur.
L'entrée se fait avec des accolades et des guillemets simples. (Les accolades dans MATLAB / MATL définissent des tableaux de cellules , qui sont des listes qui peuvent avoir des contenus de types arbitraires, éventuellement différents.) Les cas de test sont donc:
Essayez-le en ligne!
la source
DUP , 14 octets
Try it here.
Lambda anonyme. Usage:
REMARQUE: DUP n'a pas vraiment de tableaux, donc j'espère que ce format d'entrée est correct.
Explication
Eh bien, la compréhension des cordes de DUP est ... intéressante. Les chaînes sont stockées sous la forme d'une série de variables numériques, chacune contenant un code de char de la chaîne. Quelque chose comme
2"CG"
fonctionne en poussant 2 vers la pile, puis en créant une chaîne avec un index à partir de 2.Parce que ces index sont vraiment des variables, ils peuvent être remplacés. C'est ce que fait réellement l'entrée: passer outre! Essayez d'appuyer Stepsur le site de l'interprète pour vous faire une meilleure idée. Après cela, nous obtenons une chaîne non découpée en tranches.
C'est là qu'intervient la sortie.
la source
PHP, 146 caractères
Remarque: L'évaluation de l'entrée utilisateur est toujours une bonne idée.
Golfé
Non golfé
Vous pouvez voir que j'écris simplement l'entrée dans un tableau avec la clé spécifique de chaque caractère, puis que je la renvoie tout.
Les tests
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> foobarbazphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Script raccourci de 107 caractères. :RÉla source
$a[$f]=$c;$f++;
Je ne connais pas PHP mais cela ne peut-il pas être$a[$f++]=c;
?Sérieusement, 48 octets
Sérieusement est sérieusement mauvais à la manipulation de chaînes.
Essayez-le en ligne!
Explication:
Carte 1:
Carte 2:
Carte 3:
Carte 4:
En un mot, ce programme crée une chaîne avec des
n
espaces, oùn
est la longueur minimale à laquelle la chaîne peut être basée sur l'entrée. Il détermine l'index dans la chaîne de résultat de chaque caractère dans chaque tranche et définit le caractère dans la chaîne de résultat à cet index sur le caractère.la source
Python, 91 octets.
1 octet enregistré grâce au chat.
C'est un peu long. Je vais le jouer plus bas dans un peu.
la source
Python,
119115 octetsCas de test
la source
CJam, 26 octets
Essayez-le en ligne! . Prend la saisie sous forme
[["CG"2]["PP"0]["PC"1]]
.Explication:
la source
R, 181 octets
Avec des sauts de ligne:
Fonctionne en R Gui (ligne unique ou sourcing pour la ligne multiple) mais pas en ideone, exemple:
Remarque sur la méthode de saisie:
Je suppose que je suis conforme à cette partie de la spécification avec ce type d'entrée, elle peut être donnée sur plusieurs lignes, cela n'a aucun impact tant qu'il y a une ligne vierge pour terminer l'entrée.
Je pense que 2 caractères peuvent être enregistrés en supprimant le +1 et en utilisant l'indexation basée sur 1, mais j'ai commencé avec la saisie du défi.
la source
C, 110 octets
Ce programme prend la tranche après son index dans une ligne d'entrée chacun.
Non golfé:
Testez sur ideone.com
la source
Lua, 113 octets
Il s'agit probablement du code le plus sécurisé que j'ai écrit. L'idée est simple. L'utilisateur entrera un tableau formaté comme suit:
{{1, "1"}, {3, "3"}, {2, "2"}}
puis le tableau sera trié par le premier index et le deuxième index sera imprimé.la source