文章图片
文章图片
文章图片
文章图片
会刷编程竞赛题的AlphaCode来了!
其实 , AlphaCode早在几个月前就“悄悄进村”了 , 一直没人察觉 。
它默默参加了著名网站Codeforces最近举行的10场编程比赛 , 成绩超过了一半人类 。
直到今天DeepMind才公布最终成绩:AlphaCode在这10场比赛中排名前54.3% , Elo评分1238 。
更重要的是 , 在编程比赛这样考察算法创造力的问题中 , AI终于不落下风 , 而这恰恰是AI过去所欠缺的 。
如果把这个分数放到过去六个月总体来看 , AlphaCode的成绩更为优秀 , 因为它只刷了10周的题目 , 就已经达到了前28%用户的水平 。
Codeforces是一个由俄罗斯程序员Mikhail Mirzayanov创办的编程竞赛网站 , 大约每周举行一次名为“Codeforces Rounds”的编程比赛 。
通过Codeforces的Elo评分可以衡量一位程序员的编程水平 。
△ Codeforces创始人Mikhail Mirzayanov
当看到AlphaCode的成绩后 , 连创始人Mirzayanov都惊讶不已 。
他原本对AI持怀疑态度 , 因为编程比赛考验的是发明算法的能力 , 这是最困难的 , 没想到AlphaCode的结果完全超出了他的预期 。
DeepMind发布这条消息仅半天 , 在Twitter上已经有2000多次转发、5000多点赞 。
AlphaCode如何编程说了这么多 , 下面我们来看看AlphaCode是如何成为“编程做题家”的 。
以下是Codeforces上的1553D问题:
(链接:https://codeforces.com/problemset/problem/1553/D)
例如字符串s是”abcbd” , 你分别在第一个位置和第四个位置按下Backspace , 那么将得到字符串”bd” 。
有两个字符串s和t , 都是由小写字母组成 。 对于字符串s , 我们从前向后扫描整个字符串 。
如果按下Backspace键 , 就删除该光标前到上一个未删除字符之间的所有字符 。
因为在第一个光标位置前没有字符 , 所以第一次没有动作 。 第四个光标位置前的字符是c , 上一个未删除字符是a , 所以按下Backspace将删除前三个字符”bd” 。
好了 , 现在问题来了:
【编程|AlphaCode惊世登场!编程版“阿法狗”悄悄参赛,击败一半程序员】
AlphaCode给出的代码是这样的:
我们能否从前向后扫描一次s字符串 让s变为t 。 如果可以输出YES , 否则输出NO 。
t=int(input()) for i in range(t):s=input()t=input()a=[
b=[
for j in s:a.append(j)for j in t:b.append(j)a.reverse()b.reverse()c=[
while len(b)!=0 and len(a)!=0:if a[0
==b[0
:c.append(b.pop(0))a.pop(0)elif a[0
!=b[0
and len(a)!=1:a.pop(0)a.pop(0)elif a[0
!=b[0
and len(a)==1:a.pop(0)if len(b)==0:print(\"YES\")else:print(\"NO\")
向以上程序输入4组字符串:
4 ababa ba ababa bb aaa aaaa aababa ababa
得到的输出是:
YESNONOYES
在这里 , AlphaCode不再是黑箱 。
它不仅成功解决了问题 , 还能将代码和注意力高亮的对应位置显示出来 。
一位网友表示:既然AI能看得这么细 , 那么如果能在代码后面加入注释就更好了 。
至于更多的案例 , 可以去AlphaCode网站观摩 。
原理DeepMind说 , 在Codeforces比赛中所需解决问题的能力 , 已经超出了现有AI系统的能力 。
整个AlphaCode模型的流程如下:
- 编程|拔掉SIM卡,关机,使用非智能手机,行程码就不知道你的行踪了?
- 编程|扫街我可能还是喜欢带徕卡,因为它体积小,不会引人注目
- 编程|运营商员工收入低至2K,仰望乙方的华为员工收入破百万
- 清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!
- 编程|大专女生靠这个技能月入过万,怎么看都像是个童话故事
- 安卓|盛通教育:编程从scratch还是机器人开始
- web开发|Web前端培训:Web开发编程语言的首选
- 编程|年底换手机,这几种类型不适合“捡漏”,听听手机店老师傅的建议
- mybatis|你的编程能力从什么时候开始突飞猛进?众人这样说,或成为天花板
- 阿尔法|嵌入式开发:C 开发人员应遵循的 3 个显式编程技巧