微信号:programmer_club

介绍:程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!

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

2018-01-12 22:00 程序员之家

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


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



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


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


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


1
手机自动截图题目


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


2
用OCR识别问题和答案


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


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

3
调用搜索引擎「爬虫」


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


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


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


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


脑爆时刻


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

 
程序员之家 更多文章 什么是程序员思维? 心酸!美女程序员打工赚钱救绝症养父 阿里程序员穿特步相亲遭拒,女方确定不后悔? 程序员的创业陷阱:接私活 看国外“大神”程序员高大上的电脑桌
猜您喜欢 Web性能优化系列:预防布局抖动 【干货】PHP中9大缓存技术 Android ui布局控件(1) android-vertical-slide-view 沪江搜索平台化之路 你应该知道关于π的哪些事?