首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >餐厅速记

餐厅速记
EN

Code Golf用户
提问于 2015-10-15 03:11:02
回答 1查看 382关注 0票数 8

目标

有时,晚餐菜单上会有长长的名字。对于服务生来说,写一个能清晰地识别菜肴的缩写要容易得多。

例如,给定以下列表:

代码语言:javascript
复制
beef burger
chicken burger
chicken nuggets

缩写c nchicken nuggets匹配。

缩写burbeef burgerchicken burger匹配。

编写一个识别一个或多个与缩写匹配的项目的函数程序。

输入

  1. 要查找的缩写字符串。
  2. 要搜索的项目列表。

您可以更改此顺序并使用任何合适的数据类型。

输出

  • 如果缩写与任何项目不匹配:Not found
  • 如果缩写明确匹配项:输出未缩略语项。
  • 如果缩略语与几个项目不明确地匹配:输出逗号分隔的单词列表,这样可以使所选内容明确,然后是问号。命令不重要。额外的空间是允许的。

匹配规则

缩略语中的每一个词和项目都是分开考虑的。如果缩写词与项目词的开头匹配,则该项可能匹配。如果一个项目的单词中没有一个以任何缩写词开头,则该项不匹配。

缩略语可以按任何顺序排列。

缩略语不能用于匹配多个项目词,而visa则相反。

缩略语只匹配单词的开头。

假设没有任何项将包含另一项的所有单词。例如,永远不会有beef burgerbeef cheese burger

测试用例

鉴于这一清单:

代码语言:javascript
复制
beef burger
crispy chicken burger
grilled chicken burger
chicken nuggets
chocolate cone
strawberry cone
vanilla cone

这些缩写给出了指定的输出:

代码语言:javascript
复制
fish           Not found
cones          Not found
chicken cone   Not found
nilla          Not found
v              vanilla cone
be             beef burger
c n            chicken nuggets
b b            beef burger
c b c          crispy chicken burger
c b            crispy,grilled?
bu             beef,crispy,grilled?
            or beef,crispy chicken,grilled chicken?
ch             crispy,grilled,nuggets,cone?
            or crispy chicken,grilled chicken,nuggets,cone?

评分

这是暗号高尔夫。12天内最短的答案(以字节为单位)赢得了接受。(我本来可以撑上一周的,但我不会为此而来。)

EN

回答 1

Code Golf用户

发布于 2015-10-16 22:23:22

Python2-181字节

它将缩写字符串转换为正则表达式,并尝试匹配搜索列表中的组。

三元运算ifelses为14字节。我尝试将其压缩到一个列表中,然后根据r状态访问其中一个项,但还没有更短的内容。

代码语言:javascript
复制
import re
def s(a,l):
 r=[m.group(1)for e in l for m in[re.compile('^('+a.replace(' ','\w+ ')+'\w+)打电话给s(str, list):s('c n', ['chicken burger', 'chicken nuggets', 'cheeseburger'])
>>> chicken nuggets
s('c n', ['chicken burger', 'chicken nuggets', 'cheeseburger', 'chicken nuggets with sauce', 'foobar'])
>>> chicken nuggets
s('c n', ['chicken burger', 'chicken nuggets', 'cheeseburger', 'chicken nuggets with sauce', 'foobar', 'cfoo nbar'])
>>> chicken nuggets,cfoo nbar?).search(e)]if m]
 print','.join(r)+'?'if len(r)>1 else r[0]if r else'Not found'

打电话给s(str, list)

A7

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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