公元1882年,数学家菲利克斯·克莱因提出了一种自我封闭且没有明显边界的模型“克莱因瓶”。如果把克莱因瓶比做一个瓶子,那它则是一个永远无法装满的瓶子。瓶子的里面也是它的外面,没有里外之分,它的表面不会终结。
在本体主网上线一周年之际,我们致敬每一位区块链技术开发者,献出一道可有无限解决方案的技术题目——“克莱因瓶竞赛”,一周内寻求最优解决代码,并附赠数万ONG奖励,鼓励开发者探索区块链技术的极限。
GitHub链接:
https://github.com/ontio/Anniversary/blob/master/README_CN.md
挑战:正则表达式
正则表达式常用于程序设计中,通常被用来检索、替换那些符合某个模式的字符串。当前大多程序设计语言,为了方便程序开发,都提供了正则表达式的标准库,目前本体平台的智能合约正在完善更好的正则表达式标准库。
本挑战为完成一个简单规则的正则表达式匹配的智能合约。需要实现的匹配规则节选自POSIXBasicRegularExpression,详情如下:
cmatchesanyliteralcharacterc.matchesanysinglecharactermatchesanyonecharacterlistedbetweenthebracketsmatchesanyonecharacternotlistedbetweenthebrackets?matchesanycharacteronetimeifitexists*matcheszeroormoreoccurrencesofthepreviouscharactermatchesdeclaredelementoneormoretimes^matchesthebeginningoftheinputstring$matchestheendoftheinputstring
比如模式x.y能匹配xay和x2y等,但不能匹配xy或xaby。^.$能够与任何单个字符的字符串匹配,而^.*$能够与任意字符串匹配。
智能合约模版:
fromontology.interop.System.RuntimeimportNotifydefMain(operation,args):ifoperation=="match":pattern=argstext=argsreturnmatch(pattern,text)returnFalsedefmatch(pattern,text):result=True#YourImplementationHereNotify()returnresult
示例测试用例:
"abc"~"abc""a.c"~"abc""ac"~"a1c""ac~"a1c""a?c"~"c""a*c"~"abbbbc""ac"~"ac""^a"~"abc""^.*c"~"abbbbc""^$"~""
评测结果标准:
1.通过所有测试用例。我们准备了200个测试用例,所有字符皆为ASCII字符,最长模式长度为16,最长字符串长度为40。
2.完成所有测试的所需要的OntologyNeoVM指令数总和最少者获胜。
奖励
开发者助力奖池
“开发者助力奖池”是针对本次活动开发者参与度的额外激励。“克莱因瓶竞赛”活动每多1位有效开发者报名并助力,开发者助力奖池将增长100ONG,开发者助力奖池最高50,000ONG。
如何报名?
获取经GitHub认证的ONTID
1.下载ONTO或者从应用商店中取得并安装;
2.进入点击“ONTID”并注册;
3.完成GitHub身份认证。
请使用表单RegistrationForm提交以下信息:
1.经GitHub认证的ONTID;
2.GitHub账号;
3.联络邮箱。
如何助力?
开发者在提交完以上信息后,使用对应的GitHub账号在GitHub上对Ontology主网代码进行Fork和Star,即可积累有效“助力”1次,对应“开发者助力奖池”将增加100ONG奖励。该奖池数字每24小时更新一次,请以Ontology官方Twitter公告为准。如何提交参赛代码?
开发者完成开发、测试后,请务必调用存证合约将开发者的ONTID,合约hash进行存证。注意:合约调用需支付0.01ONG。存证教程可以在这里找到。
完成以上后,请开发者将合约源码通过SubmissionForm提交。
需要提交的信息包括:
·ONTID及联络邮箱
·存证合约调用的交易Hash
·合约代码
比赛规则
1.参赛时间:新加坡时间2019年6月30日18:00-7月4日18:00;
2.最终取参赛代码中“功能完备”、“完成所有测试用例且总步数最短”者获胜;
3.如有多人提交最优答案,将取最早提交者获胜。提交时间以上链存证时间为准;
4.如一人提交多次参赛代码,将以最后一次提交内容为准
获奖者能获得什么?
如确认领奖:直接领取总奖池奖金的60%,“克莱因瓶竞赛”也就此结束;
获奖者需要在名单公布后24小时内决定是否领奖,回复获奖通知邮件。如不回复,将自动领取此轮奖项。
第二轮
打擂
时间
Ontology官方Twitter公布上轮获奖者接受打擂时间后的24小时内;
此轮提交参赛代码请以GitHubPullRequest方式提交至ontio/Anniversary;
此轮开始时将公布上轮成绩排名前3的参赛代码。
比赛规则
1.此轮竞赛中所有开发者可以继续报名并提交自己的方案,包含上轮获奖者;
2.在此轮期间的最优结果如能优于上一轮解密轮结果,提交者将获得总奖池100%的奖励。上一轮获奖者60%奖励将不予发放。
https://dev-docs.ont.io/#/docs-en/smartcontract/01-started
?请使用OntologyTestNet进行测试:
https://developer.ont.io/applyOng
?SmartX开发教程:
https://smartx.ont.io/#/
?如有问题,请加入OntologyDiscord:
https://discordapp.com/invite/4TQujHj
或联络本体研究院小秘书:
ontresearch
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。