首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这串字是字母做旋转的吗?

这串字是字母做旋转的吗?
EN

Code Golf用户
提问于 2017-08-02 17:08:13
回答 21查看 5.2K关注 0票数 37

挑战的灵感就是我在某个地方看到的:

“修女”这个词就是字母n做旋转的意思。

你的挑战是拿一根绳子,并确定它是否是第一个字母做一个旋转轮。

规则

字符串是指在下列情况下执行轮转的字母:

  • 第一个字母和最后一个字母相同。(这封信不能掉在头上。)
  • 字符串在每一个字符的轮转字母之间交替。

移动字母是numwbq。请注意,nw在一起并不是任意的字母,wb也不是。

  • 您将使用我们的任何标准输入方法获取一个字符串。
  • 如果字符串是任意性字母,则输出一个真实值;如果字符串不是,则输出虚假值。输出可以使用任何标准的输出方法。

其他规则:

  • 只有小写手轮字母n/u/m/w/b/q需要处理。
  • 您可能会假设输入从不是空的。
  • 单字符字符串不是有效的方向盘。

测试用例

代码语言:javascript
运行
复制
Input        -> Output
nun          -> truthy
nunun        -> truthy
nunununu     -> falsy
wmw          -> truthy
wmwun        -> falsy
bqbqbqbqbqb  -> truthy
v^v^v        -> falsy
AVAVA        -> falsy
OOO          -> falsy
ununununu    -> truthy
nunwmwnun    -> falsy
nun unun     -> falsy
nunwmw       -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn    -> falsy
m            -> falsy
nunuuunun    -> falsy

获胜者

密码-高尔夫一样,最短的代码(在每种语言中)都是赢家!

EN

回答 21

Code Golf用户

发布于 2017-08-02 17:16:56

Python 3,111个字节

-2字节,多亏了X编码器先生。

代码语言:javascript
运行
复制
lambda s:s[0]==s[-1]and any(any({*s[::2]}=={i[j]}and{*s[1::2]}=={i[j<1]}for j in[0,1])for i in['nu','mw','bq'])

在网上试试!

票数 5
EN

Code Golf用户

发布于 2017-08-02 17:25:26

Python 3,71字节

代码语言:javascript
运行
复制
lambda n:''.join(sorted({*n[1::2]}|{*n[::2]}))in"nu,mw,bq"*(n==n[::-1])

在网上试试!

-1要感谢“超中微子”,-13要感谢@ovs

如果发现上述任何测试用例都失败了,则有另一种选择:

代码语言:javascript
运行
复制
lambda n:(sorted(list({*n[1::2]}.union({*n[::2]})))in[[*'nu'],[*'mw'],[*'bq']])*n[0]==n[-1]

在网上试试!

解释

  • ''.join(sorted(list({*n[1::2]}).union({*n[::2]})))) -获取奇数索引处的字符和偶数索引处的字符,去复制它们并对它们的联合所形成的列表进行排序。
  • in'nu,mw,bq' -检查它们是否是有效的购物车字母组合.
  • n[0]==n[-1] -检查第一个字符是否与最后一个字符相同。
票数 5
EN

Code Golf用户

发布于 2017-08-02 19:52:29

Python 2,63字节

代码语言:javascript
运行
复制
lambda s:s[:3]in'ununqbqbwmwm'and s==s[:2]*max(len(s)/2,1)+s[0]

在网上试试!

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

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

复制
相关文章

相似问题

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