Le défi est de créer un programme qui trie une liste de mots, mais seulement que les mots doivent être dans l'ordre d'un alphabet donné au hasard.
Votre programme acceptera une chaîne de mots séparés par des virgules et un nouvel alphabet.
Votre programme affichera chaque mot de la même manière dans le nouvel ordre trié.
Exemple:
Contribution:
home,oval,cat,egg,network,green bcdfghijklmnpqrstvwxzaeiouy
Production:
cat,green,home,network,egg,oval
Il s'agit d'un code-golf , donc le gagnant est la personne avec le programme le plus court.
Ceci est mon premier défi, donc toute amélioration de la question / défi est appréciée.
Sort by custom alphabet
ou quelque chose de plus créatif?Réponses:
CJam,
261917 octetsEssayez-le en ligne.
Cas de test
Comment ça fonctionne
la source
Bash + coreutils, 37 octets
Production:
la source
Pyth , 19 caractères
Tester:
Explication:
Essentiellement, il trie les morceaux, avec une clé de la liste des index des caractères de la chaîne, puis les joint par des virgules. Les opérations de retournement sont plus courtes que de diviser à nouveau la chaîne.
la source
j\,_omx_zdNchczd\,
Rubis,
5350 octetsJ'utilise Ruby
tr
pour remplacer l'alphabet personnaliséa-z
avant de trier. L'entrée se fait via un argument de ligne de commande.la source
$><<
pour imprimer à l'écran (vous pouvez alors supprimer l'espace). Vous pouvez raser deux octets supplémentaires en les affectant$*
à des variables comme ceci:a,b=$*
et en utilisant#sort_by
au lieu de#sort_by!
.*$*
(que j'avais au début et qui est de la même longueur).Python, 131
Il devrait y avoir beaucoup de place pour l'amélioration.
la source
a.find(c)
directement.JavaScript (E6) 102
119Trier avec une fonction de cartographie 'M' basée sur l'alphabet dans la variable 'a'
Avec IO en utilisant popup (invite + alerte)
En tant que fonction (testable) avec 1 paramètre de chaîne, renvoyant un tableau de chaînes (92)
Test dans la console FireFox / FireBug
Production
la source
(M(a)>M(b))-(M(a)<M(b))
M=w=>[...a].indexOf(w)
? Je ne peux pas le tester pour l'instant, malheureusement.Clojure, 115 octets
Wow, cela a bien commencé,
(sort-by(fn[w](mapv(zipmap(sort %2)%2)w)))
mais j'ai réalisé que jevec
ne suis pas trié de la même manière que les chaînes, et l'entrelacement de ces virgules nécessite également une quantité importante de code.la source