程序员之家

探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!...

程序员是这么玩冲顶大会的

我之前一直说程序员是这个世界上最厉害、最单纯的一个群体,他们总是能把世界上所有的问题用程序员的方法去解决。不信的话我先跟你说说发生在最近的两件事情:1.程序员利用图像识别自动给人头像加帽子:如何让微信官方给你加圣诞帽;2.程序员发现小程序跳一跳可以直接修改分数:微信小程序游戏「跳一跳」高分秘籍


这不跳一跳的热度还没过去都久,新的游戏来了。以去年在美国的App「HQ - Live Trivia Game Show」为原型的「冲顶大会」在国内迅速走红。冲顶大会以竞答的形式:每场参与的用户通过回答12道选择题来瓜分若干的奖金,比赛的题目涉及的知识点以及行业非常多,最终全部回答正确的人可以瓜分每场的奖金。


?wxfrom=5&wx_lazy=1


在游戏规则中每一道题目只给答题者10s钟的时间思考,如果超过时间没选则视为放弃,选错选项游戏也是直接结束。


在这样一个背景之下,有些人为了能拿到奖金开始想一些昏招,比如说最初级的:当题目出现在屏幕上的时候,迅速用搜索引擎搜索找正确答案,而这种操作最后的结果往往都是还没找到正确答案时间已经到了。


显然上面这种方法是不行的,于是程序员粉墨登场了。我们都知道冲顶大会的题目是直接显示在屏幕上的,那么程序员的思路是这样的。


1?手机自动截图题目


每当屏幕上显示问题之后,手机迅速自动截图。其实自动截图的方法在之前的微信跳一跳游戏的外挂里面就有涉及到这一块,Android 手机可以用 ADB 截屏,如果是 iPhone 可以用 WDA 来获取屏幕截图,以上都可以用Python去实现。


2?用OCR识别问题和答案


由第一步我们已经获取到了题目的截图,紧接着我们用开放的 OCR 接口把问题和回答识别为文字。网上免费的 OCR 接口很多,Python中也有很多库可以帮助我么实现,例如:tesseract-ocr 、ImageMagic 以及 PIL


*OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

3?调用搜索引擎「爬虫」


第二步我们已经能把问题和三个选项给识别出来了,那么下面要做的其实就是用爬虫技术把问题放到搜索引擎中验证哪个才是正确答案,第三步实现起来其实有两种思路。


第一种:直接把问题放入搜索引擎,用三个选项去匹配搜索引擎返回的前几页内容,可以根据关键词在搜索结果中的位置赋予不同的权重,最后对每个关键词计算加权总分,拿出最高分的关键词作为正确答案。


第二种:把「问题 + 选项」组成一个搜索词分别进入搜索引擎搜索,查看每个关键词返回的相关搜索结果的条数,拿出相关搜索结果最多的关键词作为正确答案。


以上就是整个的一个实现思路,从技术上来看都是切实可行的,并且已经有程序员做出了一个简单的版本了。整套解决方案涉及的技术点也不多,用Python可以完全实现,读者们难道不去试一下?赚钱了别忘了分我!


脑爆时刻

?


公众号内回复“1”带你进粉丝群!

0?wx_fmt=gif

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭