首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归缩略词

递归缩略词
EN

Code Golf用户
提问于 2014-05-26 13:50:07
回答 13查看 4.5K关注 0票数 32

目标

来自维基百科

递归缩略词是指它所代表的表达式本身的首字母缩略词。

您的目标是检查字符串是否是递归缩略词。

  • 首字母缩略词是第一个词
  • 单词不区分大小写,用一个空格隔开。
  • 给定的字符串不包含任何标点符号或撇号。
  • 只有每个单词的第一个字母可以作为缩略语的一部分。

您还必须给虚词。为了简单起见,每个单词都可以看作是一个虚词。

示例

代码语言:javascript
运行
复制
f("RPM Package Manager")         =>     { true, [] }
f("Wine is not an emulator")     =>     { true, ["an"] }
f("GNU is not Unix")             =>     { true, ["is"] }
f("Golf is not an acronym")      =>     { false }  
f("X is a valid acronym")        =>     { true, ["is","a","valid","acronym"] }  

你可以给出一个完整的程序或函数。

输入字符串可以从STDIN中提取,也可以作为函数参数。

输出结果可以是真/假,0/1,是/否.

如果这是递归缩略词(即使列表是空的),则必须给出函数单词列表(列表的任何格式都是有效的)。您不必保留虚词的大写。

获奖标准

这是一个密码-高尔夫,最短的代码获胜。

EN

回答 13

Code Golf用户

发布于 2014-05-26 14:26:08

Python (158,没有正则表达式)

不是我不喜欢雷克斯。就是我不认识他们。

代码语言:javascript
运行
复制
def f(x):
 s=x.lower().split();w=list(s[0][1:]);s=s[1:];o=[]
 if not w:return 1,s
 [w.pop(0)if i[0]==w[0]else o.append(i)for i in s]
 return(0,)if w else(1,o)

哦,我也有一个不打高尔夫球的版本:

代码语言:javascript
运行
复制
def acronym(string):
    scentence = string.lower().split()
    word = scentence[0][1:]
    scentence = scentence[1:]
    over = []
    if not word: return 1, scentence
    for item in scentence:
        if item[0] == word[0]:
            word = word[1:]
        else:
            over.append(item)
    if word:
        return 0,
    return 1,over
票数 11
EN

Code Golf用户

发布于 2014-05-26 20:20:04

ECMAScript 6(105个字节):

代码语言:javascript
运行
复制
f=s=>(r=(a=s.toUpperCase(i=1).split(' ')).map((w,c)=>c?a[0][i]==w[0]?(i++,''):w:''),a[0].length==i?1+r:0)

在Firefox的浏览器控制台中输入函数,然后调用该函数,如下所示:

代码语言:javascript
运行
复制
f('ABC Black Cats')     // 1,,
f('ABC is Black Cats')  // 1,IS,,
f('ABC Clapping Cats')  // 0
票数 3
EN

Code Golf用户

发布于 2014-05-27 09:37:05

Python-154个字符

这是有史以来第一次尝试高尔夫。考虑到这么长的关键字,我认为python不是最好的语言。而且,我不认为这个函数是万无一失的。它适用于OP的输入,但我相信我可以想出例外情况。

代码语言:javascript
运行
复制
def f(s):
    w=s.lower().split();r=list(w[0]);return(True,[x for x in w if x[0]not in r])if len(r)==1 or[x for x in[y[0]for y in w]if x in r]==r else False
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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