Inspiré par ce lien que j'ai trouvé sur Reddit .
Un FuzzyFinder est une fonctionnalité de nombreux éditeurs de texte. Lorsque vous commencez à taper un chemin de fichier S
, le FuzzyFinder entre en action et vous montre tous les fichiers du répertoire actuel contenant la chaîne que vous avez entrée, triés par la position de S
dans le fichier.
Votre tâche consiste à implémenter un chercheur flou. Il doit s'agir d'un programme ou d'une fonction qui prend (via stdin, argument de fonction ou ligne de commande) une chaîne S
et une liste de chaînes L
, formatées comme vous le souhaitez, et retourne ou imprime le résultat de l'exécution du viseur flou. La recherche doit être sensible à la casse. Les résultats où se S
trouve dans la même position dans plusieurs chaînes peuvent être triés comme vous le souhaitez.
Exemple:
Input: mig, [imig, mig, migd, do, Mig]
Output:
[mig, migd, imig]
OR
[migd, mig, imig]
C'est le golf de code, donc la solution la plus courte l'emporte.
Réponses:
Pyth, 9 octets
Essayez-le en ligne: Démonstration
Explication:
la source
Python 2, 65
L'expression
x.find(s)
renvoie la position de la première occurrence des
inx
, ne donnant-1
aucune correspondance. Nous ajoutons1
au résultat auquel correspond cette non-correspondance0
, en les laissantfilter
sortir. Nous trions ensuite par la position de correspondance, qui n'est pas affectée par le décalage de 1.la source
CJam,
1815 octetsEssayez-le en ligne dans l' interpréteur CJam .
E / S
Contribution:
Production:
Comment ça fonctionne
la source
GolfScript, 13 octets
C'est l'une de ces rares occasions où GolfScript peut battre CJam, en utilisant la concaténation de blocs et en prenant quelques libertés avec l'entrée qui peut être formatée comme vous le souhaitez .
Essayez-le en ligne dans Web GolfScript .
E / S
Contribution
Production
Comment ça fonctionne
la source
JavaScript ES6, 68 octets
Il s'agit d'une fonction anonyme qui prend les paramètres
s
(chaîne de chemin de fichier) etl
(tableau de chaînes). L'extrait de pile ci-dessous contient du code non golfé converti en ES5 afin que plus de personnes puissent le tester facilement. (Si vous avez Firefox, vous pouvez utiliser la plus jolie suite de tests d'edc65 trouvée dans sa réponse.)la source
[Maintenir] Pyth, 24 octets
Essayez est ici
Je suis assez nouveau chez Code Golfing / Pyth donc je ne suis pas sûr que ce soit optimal, mais j'y travaille!
Mise à jour: je ne pense pas que je trie correctement et je n'arrive pas à le faire fonctionner. Je sais que
o
c'est par ordre, et j'ai besoin de trier par position de S donc j'utilise.:GlJ
pour trouver toutes les sous-chaînes de la longueur de S pour l'élément courantG
et ensuitex
pour trouver l'indice de la première occurrence de S, mais je n'arrive pas à régler correctement lambda.la source
z
etQ
. Leur utilisation vous donne immédiatement 18 octets. Et vous pouvez supprimer lel
inVlK
=> 17 octets ( lien )imig mig migd do Mig imig
JavaScript ( ES6 ), 68
C'est presque la même chose que la réponse @NBM (même si elle n'est pas copiée), donc je ne m'attends pas à des votes positifs. Profitez de l'extrait quand même
Une fonction avec une chaîne et des arguments de tableau de chaînes, renvoie un tableau de chaînes. Filtrer puis trier.
Testez runnign l'extrait ci-dessous (étant EcmaScript 6, Firefox uniquement)
la source
ORACLE, 60
Est-ce que cela compte?
select * from t where a like '%mig%' order by instr(a,'mig')
la source
Haskell,
129116116 (Merci à Franky):
129:
Eh bien, c'est assez long, peut-être que je trouverai comment le raccourcir un peu ...
la source
h s=map snd.sort.map(\x->((head[c|c<-[0..length x],isPrefixOf s(drop c x)]),x)).filter(isInfixOf s)
Python 2,
696866 octetsJe viens de créer une fonction qui prend
s
comme chaîne à faire correspondre dans une liste de chaînesn
Edit 1: Merci à Jakube pour avoir joué un octet au golf.
Vérifiez le ici.
la source
Rubis, 63
Courir
Remarques
find_all
Modifier (par daneiro)
Rubis, 49
la source
p=->w,l{l.select{|x|x[w]}.sort_by{|e|e.index(w)}}
select
est un alias pourfind_all,
etsort
etsort_by
sont fondamentalement les mêmes choses enveloppements légèrement différentes. Je vous voterai plutôt pour avoir pensé à la même solution que moi;)Raquette 46 octets
Usage:
Essai:
Production:
la source
Groovy, 32 octets
la source
Pip , 15 octets
14 octets de code, +1 pour l'
-p
indicateur.Prend la liste comme arguments de ligne de commande et la chaîne de stdin. Essayez-le en ligne!
Explication
la source