Étant donné une chaîne, inversez-la de manière entrelacée. Voici comment procéder pour abcdefghi
et abcdefghij
indexé 0:
- Séparez les caractères aux indices pairs des caractères aux indices impairs:
acegi bdfh
acegi bdfhj - Inversez les caractères aux indices impairs:
acegi hfdb
acegi jhfdb - Entrelacer à nouveau dans une chaîne:
ahcfedgbi
ajchefgdib
Règles
- Vous devez prendre en charge les chaînes de longueur paire et de longueur impaire.
- 0 par index, vous devez inverser les caractères aux indices impairs, pas même.
- Bien entendu, vous devez inverser les caractères à des indices pairs, pas impairs.
- L'entrée consistera en ASCII imprimable (points de code 32-126), sans nouvelle ligne.
- Vous pouvez prendre les entrées sous forme de chaîne ou de liste de caractères (PAS de chaînes de 1 caractère). Par exemple
String
/char[]
ouchar*
sont autorisés, maisString[]
/char[][]
ouchar**
ne le sont pas.
Cas de test
Input
Output
Hello, World!
HdlroW ,olle!
Hello World!
H!llooW rlde
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZCXEVGTIRKPMNOLQJSHUFWDYB
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
}"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~
P
P
AB
AB
xyz
xyz
Pour la chaîne vide, renvoyez la chaîne vide elle-même.
Réponses:
Gelée , 7 octets
Ceci est un programme complet.
Essayez-le en ligne!
Comment ça fonctionne
la source
MATL , 8 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
2L
est de même pour «Push [2,2,1j]» et5M
«Push [2,2,1j] again» ... Et certains disent que les langues de golf ne sont pas lisibles!2L
produit un littéral prédéfini.5M
est un presse-papiers automatique qui stocke les entrées des appels de fonction récents. Il pourrait en fait être remplacé par2L
le même nombre d'octetsAlice , 10 octets
Essayez-le en ligne!
La moitié des octets de ce programme sont consacrés au formatage correct de la source, les commandes réelles sont justes
IYRZO
, car Alice a juste les bonnes fonctionnalités pour cette tâche.Explication
Comme je l'ai dit, les miroirs (
/\
), la nouvelle ligne et@
sont là juste pour faire bouger l'ip dans la bonne direction et terminer le programme à la fin. Le code réel, linéarisé, est le suivant:Je dirais assez simple.
la source
Java (OpenJDK 8) ,
108969493 octetsEnregistré 1 octet en utilisant @ astuce de Neil d'utiliser
s[s.length+~i|1]
Essayez-le en ligne!
la source
String f(char[]s)
avecs->
.. Et vous pouvez enregistrer un octet et en mettant l'int
initialisation dans la boucle for:for(int a=s.length,b=0;b<a;b++)
. Essayez-le en ligne.Python 2 , 52 octets
Essayez-le en ligne! ou Essayez tous les cas de test
la source
Octave, 32 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 48 octets
la source
Gelée , 9 octets
Essayez-le en ligne!
-1 octet grâce à Dennis
la source
¢
parÇ
, vous n'avez pas besoin de³
dans le lien d'assistance.Retina ,
1713 octetsEssayez-le en ligne!
Correction d'une erreur grâce à Neil.
4 octets enregistrés grâce à Kobi.
Sélectionne chaque lettre précédée d'un nombre impair de caractères et les inverse. Pour ce faire, en utilisant
\G
ce qui correspond à la fin de la dernière correspondance.la source
$
place de#
.\G
place sur le lookbehind, et vous pouvez supprimer$
:O^`(?<=\G.).
(12 octets)$
car toutes les entrées étaient triées lexicographiquement. J'ai ajouté un nouveau cas de test sur lequel votre code échouerait.PHP> = 7.1, 58 octets
Version en ligne
la source
APL (Dyalog) , 9 octets
Requiert
⎕IO←0
(par défaut sur de nombreux systèmes) pour une définition correcte de pair et impair.Essayez-le en ligne!
⌽
sens inverse@
au niveau des éléments filtrés par le masque résultent de l'application du{
fonction anonyomous2|
le mod-2 de⍳
les indices de≢
le décompte (longueur) de⍵
l'argument}
sur l'argumentla source
Röda , 34 octets
Essayez-le en ligne!
Explication
Voici une solution alternative au même bytecount
3634 octetsIl s'agit d'une fonction anonyme qui prend l'entrée sous forme de chaîne du flux d'entrée.
la source
Python 2 , 67 octets
Essayez-le en ligne!
la source
OCaml , 70 octets
Essayez-le en ligne!
la source
Haskell , 63 octets
Essayez-le en ligne! Utilisation:
f "some string"
.Pour les chaînes impaires comme
abcdefghi
, la fonctionf
transmet la chaîne et son inversion à la fonction!
, qui alterne en prenant les caractères des deux chaînes. Pour les chaînes paires, cela ne fonctionne pas, et nous devons d'abord ajouter un caractère fictif pour obtenir le bon décalage.la source
C, 69 octets
Assez simple. Parcourt la chaîne, imprimant le caractère actuel ou le caractère opposé.
Non golfé et expliqué:
la source
Mathematica, 82 octets
la source
Japt ,
1413 octets12 octets de code, +1 pour le
-P
drapeau.1 octet enregistré grâce à @Shaggy
Explication:
Essayez-le en ligne!
la source
ë2,1
c'est plutôt moche. Je pense que vous pouvez faire à laó o
place, peut-être ...Åë
marche aussi.Japt , 8 octets
Essaye-le
la source
K (oK) , 18 octets
Solution:
Essayez-le en ligne!
Exemples:
Explication:
Interprété principalement de droite à gauche, recherchez les caractères d'indice impair, inversez-les et remettez-les dans la chaîne
la source
J, 26 octets
non golfé
explication
(0 1$~#)]`(|.@])/.]
Utilisez Clé/.
pour diviser l'entrée en groupes pairs / impairs:(0 1$~#)
crée la définition de groupe, en répétant 0 et 1 cycliquement à la longueur de l'entrée. Nous utilisons la forme gérondive de clé pour son verbe principal]`(|.@])
, qui applique l'identité au premier groupe et inverse le second groupe:(|.@])
.,@,./
Essayez-le en ligne!
la source
(\:2|#\)({~/:)#\<.#\.
et 19 octets avec[:,@,./]]
| ./. ~ 2 | # `[:,@,./]]`|./.~2|#\
, les tiques ont été analysées0,@|:]]`|./.~2|#\
Python 3,
9387 octetsla source
reversed(s[1::2])
pars[1::2][::-1]
pour économiser 4 octetsf=lambda s,j="".join:j(j(t)for t in zip(s[::2],s[1::2][::-1]))+("",s[-1])[len(s)%2]
Perl 6 ,
63 5855 octetsEssaye-le
Essaye-le
Essaye-le
J'ai dû utiliser
roundrobin
plutôt quezip
, carzip
s'arrête dès que l'une des listes de saisie est épuisée.la source
Mathematica, 62 octets
prend en entrée une chaîne
Essayez-le en ligne!
la source
APL (Dyalog) , 24 octets
Bytes a joué au golf grâce à @ Adám
Essayez-le en ligne!
la source
GNU APL 1.2, 24 octets
APL fonctionne de droite à gauche.
⍴R←⍞
attribue une entrée utilisateur àR
, puis évalue sa longueur. Réduisez de moitié en multipliant par.5
et appliquez la⌊
fonction de plancher.⍳
renvoie tous les nombres de 1 à l'argument.APL fonctionne sur des tableaux, donc
2×
le tableau que nous venons d'obtenir de⍳
double chaque élément, nous donnant seulement les indices pairs (indexés 1, donc s'appuie sur⎕IO
1).Lors de l'accès à plusieurs indices d'un vecteur, APL donne les éléments de ces indices dans un vecteur.
R[X←2×⍳⌊.5×⍴R←⍞]
ne donne que les éléments pairs.⌽
inverse les éléments. Attribuez ensuite les valeurs inversées aux indices pairs (l'attribution de ces indices àX
enregistre 6 octets).◊
est le séparateur d'instructions. Une fois l'inversion terminée, évaluezR
pour imprimer le résultat.la source
Perl 5, 46 + 3 pour -F flag = 49 octets
Utilise l'
-F
indicateur pour diviser automatiquement l'entrée en un tableau de caractères,@F
. Boucle dans le tableau et génère cet élément pour un index pair ou cet index (plus un pour une chaîne de longueur impaire) à partir de la fin pour une entrée impaire.Prend des entrées avec une nouvelle ligne de fin. Sans la nouvelle ligne de fin, il suffit de modifier le pré-incrément
$x
en un post-incrément.Un peu plus lisible:
la source
05AB1E , 21 octets
Essayez-le en ligne!
Je suppose que la raison pour laquelle cela n'a pas été fait dans 05AB1E est parce que c'est dégoûtant ...
Une autre fois encore,
zip
dernier élément de la fonction blesse au lieu d'aider.PS Si vous avez des suggestions d'amélioration sur ma réponse, postez la vôtre; il s'agit probablement d'une amélioration suffisante pour vous garantir d'obtenir des points. J'ai honte de cette réponse.
la source
q / kdb +,
70564738352927 octetsSolution:
Exemple:
Explication:
Recherchez les indices impairs de la chaîne, inversez cette liste, retirez les éléments à ces points, puis réaffectez-les en place à la chaîne d'origine.
Modifications:
-9 octets; commutation
count
pour(#:)
,til
pour(!)
,where
pour(&:)
etreverse
pour(|:)
.-3 octets; commutation
(#:)
pour(#)
,(&:)
pour(&)
et(|:)
pour(|)
-6 octets; réécriture complète
-2 octets; utiliser l'affectation plutôt que d'appliquer
la source
05AB1E , 12 octets
Essayez-le en ligne!
la source