首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现FuzzyFinder

实现FuzzyFinder
EN

Code Golf用户
提问于 2015-06-22 19:05:28
回答 9查看 1.8K关注 0票数 14

我在Reddit上找到的链接的启发。

FuzzyFinder是许多文本编辑器的一个特性。当您开始键入文件路径S时,FuzzyFinder将启动并显示当前目录中包含您输入的字符串的所有文件,并按S在文件中的位置排序。

你的任务是实现一个模糊查找器。它应该是程序或函数(通过stdin、函数参数或命令行)、字符串S和字符串L列表(按您的意愿格式化),并返回或打印运行模糊查找器的结果。搜索应该区分大小写。S在多个字符串中处于相同位置的结果可以按您的意愿排序。

示例:

代码语言:javascript
复制
Input: mig, [imig, mig, migd, do, Mig]
Output:
    [mig, migd, imig]
OR
    [migd, mig, imig]

这是密码高尔夫,所以最短的解决方案获胜。

EN

回答 9

Code Golf用户

回答已采纳

发布于 2015-06-22 21:34:31

Pyth,9字节

代码语言:javascript
复制
oxNzf}zTQ

在线试用:游行示威

解释:

代码语言:javascript
复制
            implicit: z = input string, Q = input list
    f   Q   filter Q for elements T, which satisfy:
     }zT      z is substring of T
o           order the remaining strings N by:
 xNz          the index of z in N
票数 6
EN

Code Golf用户

发布于 2015-06-22 22:10:46

Python 2,65

代码语言:javascript
复制
def f(s,l):g=lambda x:x.find(s)+1;print sorted(filter(g,l),key=g)

表达式x.find(s)返回s第一次出现在x中的位置,给出不匹配的-1。我们将1添加到不匹配对应于0的结果中,允许将它们输出filter。然后,我们根据匹配位置进行排序,不受1的移动影响。

票数 5
EN

Code Golf用户

发布于 2015-06-22 19:42:09

JavaScript ES6,68字节

代码语言:javascript
复制
(s,l,f=j=>j.indexOf(s))=>l.filter(w=>~f(w)).sort((a,b)=>f(a)>f(b))

这是一个匿名函数,它接受参数s (文件路径字符串)和l (字符串数组)。下面的堆栈代码段包含转换为ES5的未使用的代码,这样更多的人可以轻松地测试它。(如果你有火狐,你可以使用edc65 65‘S更漂亮的测试套件,在他的回答中找到。)

代码语言:javascript
复制
f=function(s,l){
  g=function(j){
    return j.search(s)
  }
  
  return l.filter(function(w){
    return ~g(w)
  }).sort(function(a,b){
    return g(a)>g(b)
  })
}

id=document.getElementById;run=function(){document.getElementById('output').innerHTML=f(document.getElementById('s').value,document.getElementById('l').value.split(', ')).join(', ')};document.getElementById('run').onclick=run;run()
代码语言:javascript
复制
<label>File path: <input type="text" id="s" value="mig" /></label><br />
<label>Files: <input type="text" id="l" value="imig, mig, migd, do, Mig" /></label><br />
<button id="run">Run</button><br />
Output: <output id="output"></output>
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/52012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档