首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(RGS 2/5)在这些字符类中可以计算多少字符串?

(RGS 2/5)在这些字符类中可以计算多少字符串?
EN

Code Golf用户
提问于 2020-02-28 08:02:25
回答 16查看 1.8K关注 0票数 21

任务

给定一个由ASCII可打印字符组成的字符串,返回多少字符串可以与字符文本和类似regex的范围匹配给定的模式。

模式字符串

模式字符串遵循下面的语法(x表示一个选项,*表示左边发生的任何事情的0次或更多次):

代码语言:javascript
复制
pattern := '' | pattern_string
pattern_string := (SAFE_CHAR | ASCII_RANGE) pattern_string*
ASCII_RANGE := '[' CHAR '-' CHAR ']'

其中CHAR是范围内的任何ASCII字符,[32, 127]SAFE_CHAR是除[-]三个字符之外的任何CHAR

示例

模式字符串的示例将是a[0-*]4fj[a-z][4-9]D[d-B]

输入

图案串。您可以假设所有范围都是格式良好的,并且范围中的所有第二个字符都有它们的ASCII代码点>=,而不是该范围中对应的第一个字符。

输出

对应于与给定模式字符串匹配的字符串数的整数。

测试用例

代码语言:javascript
复制
"" -> 1
"a" -> 1
"[*-0]" -> 7
"[0-9][0-9]" -> 100
"[a-z]d[A-z]" -> 1508
"[<->]" -> 3
"[!-&]" -> 6
"[d-z]abf[d-z]fg" -> 529
"[[-]]" -> 3
"[a-a][b-b]cde[---]" -> 1
"[0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1]" -> 4096
"[--[][--]]" -> 2303
"[[-[].[]-]]" -> 1

您可以检查我用来生成测试用例的这个Python参考实现

这是密码-高尔夫所以最短的提交字节,赢!如果你喜欢这个挑战,考虑一下.打高尔夫球也很开心!

这是RGS高尔夫表演的第二个挑战。如果你想参加比赛,你有96个小时的时间提交你的合格答案。记住,在奖品中还有400个声誉!(见规则6)

此外,根据链接元员额规则第4节的规定,第二个挑战的“受限语言”是:05AB1EW果冻杰夫特盖亚MathGolf斯塔克斯,因此以这些语言提交的作品没有资格获得最终奖。但他们仍然可以被张贴!!

否则,这仍然是一个常规的密码-高尔夫挑战,所以享受吧!

EN

回答 16

Code Golf用户

发布于 2020-02-28 08:49:42

拉库,37字节

代码语言:javascript
复制
{[*] map {137+[R-] .ords},m:g/\[.../}

在网上试试!

票数 3
EN

Code Golf用户

发布于 2020-02-28 15:08:23

R,73字节

代码语言:javascript
复制
function(s,i=el(gregexpr("\\[.-",s)),u=utf8ToInt(s))prod(u[i+3]-u[i+1]+1)

在网上试试!

今天,我了解到要将字符[包含在regexp中,您需要转义它两次:\\[

票数 3
EN

Code Golf用户

发布于 2020-02-28 21:02:48

C++ (gcc),70字节

代码语言:javascript
复制
int f(char*s){int r=1;for(;*s;)r*=*s++-91?1:1-*s+(s+=3)[-1];return r;}

在网上试试!

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

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

复制
相关文章

相似问题

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