首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >???问号?

???问号?
EN

Code Golf用户
提问于 2018-04-26 12:42:55
回答 2查看 351关注 0票数 -4

挑战

创建一个以字符串作为参数的函数。(远容易)

此字符串将包含

  • 单数数
  • 字母表中的字母
  • 问号(当然)

您的函数将检查每一对加起来等于10或更多的数字之间是否确实存在3 question marks。如果是这样,那么您的函数应该返回truthy,否则它应该返回falsey

如果字符串中没有任何两个加起来等于10或更多的数字,则函数应该返回false。

规则

  • 输入必须是字符串。
  • 输出必须是truthyfalsey
  • 如果字符串只包含一个数字或没有一个数字,则返回falsey
  • 如果字符串包含单数的奇数,忽略最后一个(从左到右)

示例

给予:"arrb6???4xxbl5???eee5"

您的函数必须输出true,因为在64之间有确切的3 question marks,在字符串的末尾有55之间的3 question marks

给予:"a4sd???9dst8?3r"

您的函数必须输出false,因为83之间只有一个single question mark

测试用例

输入:"aa6?9"

输出:false

输入:"acc?7??sss?3rr1??????5"

输出:true

输入:"sdty5???xcd8s3"

输出:true

输入:"sthfer5dfs"

输出:false

更新(一些澄清点)

  • 一旦你用一个数字与他人配对,你就不能再使用它了。
  • 只能对连续数字(从左到右)。示例"as4f???6sda3?3d"这对是4-63-3

这是密码-高尔夫,所以以字节为单位的最短答案获胜。

EN

回答 2

Code Golf用户

发布于 2018-04-26 13:01:15

Python 3,148个字节

代码语言:javascript
复制
def f(a):q=[a.group(1).count("?")==3for a in re.finditer("(?=((\d+)\D+(\d+)))",a)if 10==sum(map(int,a.groups()[1:]))];return any(q)*all(q)
import re

在网上试试!

票数 1
EN

Code Golf用户

发布于 2018-04-26 13:44:13

Python 2,126个字节

all*any idea是由@Hyper中微子,结帐他的回答

代码语言:javascript
复制
def f(n):r=[sum(map(int,g[0::2]))>9for g in re.findall('(\d)(.*?)(\d)',n)if 3==g[1].count('?')];return all(r)*any(r)
import re

在网上试试!

Python 2,125个字节

[]表示为false,[True]为true

代码语言:javascript
复制
def f(n):r=[sum(map(int,g[0::2]))>9for g in re.findall('(\d)(.*?)(\d)',n)if 3==g[1].count('?')];return r[:1]*all(r)
import re

在网上试试!

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

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

复制
相关文章

相似问题

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