Inspirado en este enlace que encontré en Reddit .
Un FuzzyFinder es una característica de muchos editores de texto. A medida que comienza a escribir una ruta de archivo S, FuzzyFinder se activa y le muestra todos los archivos en el directorio actual que contiene la cadena que ingresó, ordenados por la posición del Sarchivo.
Su tarea es implementar un buscador difuso. Debe ser un programa o función que tome (a través de stdin, argumento de función o línea de comando) una cadena Sy una lista de cadenas L, formateadas como desee, y devuelva o imprima el resultado de ejecutar el buscador difuso. La búsqueda debe ser sensible a mayúsculas y minúsculas. Los resultados en los que se Sencuentra en la misma posición en varias cadenas se pueden ordenar como desee.
Ejemplo:
Input: mig, [imig, mig, migd, do, Mig]
Output:
[mig, migd, imig]
OR
[migd, mig, imig]
Este es el código de golf, por lo que gana la solución más corta.

Respuestas:
Pyth, 9 bytes
Pruébelo en línea: demostración
Explicación:
fuente
Pitón 2, 65
La expresión
x.find(s)devuelve la posición de la primera aparición desinx, que-1no da lugar a coincidencias. Agregamos1al resultado que esa no coincidencia corresponde0, dejándonosfiltersalir. Luego ordenamos por la posición del partido, que no se ve afectada al cambiar por 1.fuente
CJam,
1815 bytesPruébelo en línea en el intérprete de CJam .
I / O
Entrada:
Salida:
Cómo funciona
fuente
GolfScript, 13 bytes
Esta es una de esas raras ocasiones en las que GolfScript puede vencer a CJam, utilizando la concatenación de bloques y tomándose algunas libertades con la entrada que puede formatearse como desee .
Pruébelo en línea en Web GolfScript .
I / O
Entrada
Salida
Cómo funciona
fuente
JavaScript ES6, 68 bytes
Esta es una función anónima que toma parámetros
s(cadena de ruta de archivo) yl(matriz de cadenas). El Fragmento de pila a continuación contiene un código no codificado convertido a ES5 para que más personas puedan probarlo fácilmente. (Si tiene Firefox, puede usar el conjunto de pruebas más bonito de edc65 que se encuentra en su respuesta).fuente
[Sostener] Pyth, 24 bytes
Intenta está aquí
Soy bastante nuevo en Code Golfing / Pyth, así que no estoy seguro de que sea óptimo, ¡pero estoy trabajando en ello!
Actualización: No creo que realmente esté ordenando correctamente, y parece que no puedo hacer que funcione. Sé que
oes ordenar por, y necesito ordenar por posición de S, así que estoy usando.:GlJpara encontrar todas las subcadenas de la longitud de S para el elemento actualGy luegoxpara encontrar el índice de la primera aparición de S, pero parece que no puedo configurar lambda correctamente.fuente
zyQ. Usarlos te da inmediatamente 18 bytes. Y puede eliminar ellinVlK=> 17 bytes ( enlace )imig mig migd do Mig imigJavaScript ( ES6 ), 68
Eso es casi lo mismo de la respuesta @NBM (incluso si no está copiada), por lo que no espero votos positivos. Disfruta el fragmento de todos modos
Una función con una cadena y una serie de argumentos de cadena, devuelve una matriz de cadena. Filtrar luego ordenar.
Pruebe ejecutar el fragmento a continuación (siendo EcmaScript 6, solo Firefox)
fuente
ORACLE, 60
¿Esto cuenta?
select * from t where a like '%mig%' order by instr(a,'mig')fuente
Haskell,
129116116 (Gracias a Franky):
129:
Bueno, es bastante largo, tal vez encontraré cómo acortarlo un poco ...
fuente
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 BytesAcabo de crear una función que toma
sla cadena para que coincida en una lista de cadenasnEdición 1: Gracias a Jakube por jugar golf en un byte.
Compruébalo aquí.
fuente
Rubí, 63
correr
Notas
find_allEditar (por daneiro)
Rubí, 49
fuente
p=->w,l{l.select{|x|x[w]}.sort_by{|e|e.index(w)}}selectes un alias parafind_all,esortysort_byson básicamente las mismas cosas en ligeramente diferentes envoltorios. En cambio, te votaré por pensar en la misma solución que yo;)Raqueta 46 bytes
Uso:
Pruebas:
Salida:
fuente
Groovy, 32 bytes
fuente
Pip , 15 bytes
14 bytes de código, +1 para
-pbandera.Toma la lista como argumentos de línea de comando y la cadena de stdin. Pruébalo en línea!
Explicación
fuente