Votre défi consiste à trier une chaîne, mais plutôt que par ordre alphabétique normal (abc..xyz), vous trierez les chaînes par alphabet spécifié.
Vous devez écrire un programme ou une fonction qui prend deux entrées: un alphabet A et une chaîne S . Les deux ne contiendront que des lettres anglaises en minuscules et les deux contiendront au moins un caractère.
Vous devez déplacer les lettres en S pour que la lettre qui apparaît en premier en A apparaisse en premier, puis la lettre qui apparaît en second en A , etc. Il peut y avoir des lettres en S qui n'apparaissent pas en A , celles-ci doivent être laissées à la fin et pas déplacé les uns par rapport aux autres.
Cas de test:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Le moins d'octets gagne!
Réponses:
05AB1E , 4 octets
Essayez-le en ligne!
Explication
la source
Σ²sk>
.R۠
travailler comme prévu cependant :). Parfois, cela peut fonctionner comme unevy
boucle plus petite . Gentil homme de réponse.Python 3 ,
50 47 4644 octets-3 octets grâce à ngn!
-1 octet grâce à mypetlion
Essayez-le en ligne!
Prend une chaîne comme alphabet et une liste de caractères comme chaîne et trie la liste en place.
Le
%27
garantit que si le caractère n'est pas dans l'alphabet, l'index renvoyé le place après le reste de l'alphabet.la source
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
pour économiser 1 octetHaskell, 42 octets
Essayez-le en ligne!
la source
Perl 6 ,
5543 octetsEssayez-le
Essayez-le
Étendu:
la source
Haskell ,
4034 octets-6 octets énormes merci à Laikoni .
Essayez-le en ligne!
La première ligne est une expression qui prend deux arguments: S et A .
la source
f=
car les fonctions anonymes sont autorisées.(<>)
est maintenant dans Prelude, donc cela peut être raccourcifoldr(\c->r(==c)<>r(/=c))
pour 34 octets: Essayez-le en ligne!Stax , 6 octets
Exécuter et déboguer
Cela trie par un bloc qui fait cela.
la source
Python 2 , 38 octets
a doit être une chaîne, s une liste de chaînes de longueur 1. f trie s en place.
Essayez-le en ligne!
Version alternative, chaîne d'E / S, 48 octets
Essayez-le en ligne!
Comment ça marche
s.sort(None,a[::-1],1)
est un raccourci pours.sort(cmp=None,key=a[::-1],reverse=1)
.De la documentation :
la source
cmp
et faitkey
etreverse
des arguments de mots clés uniquement, donc illist.sort
ne prend qu'un seul argument positionnel.J , 5 octets
Verbe dyadique, prenant l'alphabet à gauche et la chaîne à trier à droite.
i.
trouve les indéces des caractères de la chaîne dans l'alphabet, la longueur de l'alphabet si elle n'est pas trouvée./:
trie son agrément gauche selon l'ordre spécifié dans celui de droite.]
l'argument droit (la chaîne)Essayez-le en ligne!
la source
Python 2 ,
3550 octetsEssayez-le en ligne!
Prend
a
ets
comme cordes; renvoie une liste de chaînes singelton.Remarque: Ouch! A gagné 15 octets pour corriger ...
la source
K (ngn / k) , 9 octets
Essayez-le en ligne!
{
...}
est une fonction avec des argumentsx
ety
x?y
trouve pour chaque élément dansy
l'index de sa première occurrence dansx
; si un élément n'est pas trouvé dansx
, son indice est pris en compte0N
(-2 63 )-
annule tous les indices sauf qu'il garde les0N
-s intacts, car 2 63 ≡-2 63 (mod 2 64 )>
renvoie une permutation de tri décroissanty@
indexy
avec celala source
Fusain , 13 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Gelée , 4 octets
Un lien dyadique acceptant la chaîne à gauche et l'alphabet à droite (sous forme de listes de caractères) et renvoyant le résultat (également sous forme de liste de caractères).
Essayez-le en ligne!
Comment?
la source
APL (Dyalog Unicode) , 5 octets SBCS
Fonction de préfixe tacite anonyme, prenant
[string,ordering]
comme argument.Essayez-le en ligne!
…
/
Réduisez de la fonction suivante:… À
⍨
savoir la version à arguments inversés de la fonction suivante:⍋
noter la chaîne de droite selon l'ordre de gauche (les lettres manquantes vont à la fin)⌷
utiliser cela pour indexer dans ...⊃
le premier élément de l'argument (c'est-à-dire la chaîne)la source
JavaScript (SpiderMonkey), 50 octets
Prend des entrées dans la syntaxe de curry
(a)(s)
, où a est une chaîne et s est un tableau de caractères. Renvoie un tableau de caractères.Essayez-le en ligne!
Comment?
Nous définissons la fonction d'aide g () comme:
qui renvoie:
Nous trions s [] en calculant g (b) - g (c) pour chaque paire de caractères (b, c) passée au rappel de sort () .
Étant donné que l'implémentation de sort () dans SpiderMonkey est stable, tous les caractères de s [] qui n'appartiennent pas à l'alphabet sont simplement déplacés à la fin dans l'ordre d'apparition et sont laissés inchangés lorsqu'ils sont comparés les uns aux autres.
JavaScript (ES6), 61 octets
Prend une entrée dans la syntaxe de curry
(a)(s)
, où a et s sont des tableaux de caractères. Renvoie une chaîne.Essayez-le en ligne!
la source
R ,
69 6258 octetsEssayez-le en ligne!
L'entrée et la sortie sont des vecteurs de caractères individuels.
Explication:
la source
Brain-Flak (BrainHack) , 118 octets
Essayez-le en ligne!
L'entrée est la première chaîne, suivie d'une valeur nulle, suivie de la deuxième chaîne. Une version qui utilise une nouvelle ligne comme séparateur ajoute à la place 24 octets:
Brain-Flak , 142 octets
Essayez-le en ligne!
Explication
la source
C (gcc) , 97 octets
Tous les espaces (espaces et sauts de ligne) dans le code ci-dessus sont uniquement à des fins de lisibilité et doivent être supprimés.
Le dictionnaire est passé
D
et a une longueurd
, la chaîne est passéeS
et a une longueurs
.i
eto
doit être omis.Essayez-le en ligne!
la source
Pyth ,
95 octetsEssayez-le ici!
la source
Java 8, 98 octets
Essayez-le en ligne.
Explication:
la source
String.repeat(int)
méthode de Java 11 . Agréable! :).repeat(n)
semble prometteur, cependant. : DPerl 5 avec
-pF
, 43 octetsEssayez-le en ligne!
la source
$_=<>;
gratuitement?@F
, mais je ne l'ai pas ajouté à l'en-tête! Je vais le faire maintenant! Merci!Prolog (SWI) , 136 octets
Essayez-le en ligne! Exemple d'utilisation:
la source
Nettoyer , 61 octets
Essayez-le en ligne!
Définit la fonction
$ :: [Char] [Char] -> [Char]
.Sans surprise, c'est la réponse Haskell de nimi mais plus longtemps.
la source
Gelée , 7 octets
Essayez-le en ligne!
la source
APL + WIN, 12 octets
Invite à saisir à l'écran S puis A:
Essayez-le en ligne! Gracieuseté de Dyalog Classic
la source
PynTree , 13 octets
Essayez-le en ligne!
Réponse de Python du port de Jo King.
Explication
la source