中年|技术探索|全自动玩转小程序“数独”( 二 )



中年|技术探索|全自动玩转小程序“数独”
本文插图

图4
OCR文字识别 。 在获取小方块的图片文件后 , 调用OCR文字识别模块对其进行识别 。 建立自定义函数get_ocr() , 用于识别并返回结果 。 核心代码如图5所示 。
图5
构建“数独题目” 。 获取到每一个小方块的字符以后 , 就可以创建“数独题目”了 。 建立自定义函数get_sodoku_myxy() , 用于构建一个二维数组 , 存储“数独题目”并返回 。 核心代码如图6所示 。
中年|技术探索|全自动玩转小程序“数独”
本文插图

图6
模块三:采用回溯算法求解数独
“数独题目”构建完毕 , 需采用合适的算法求解数独 。 数独中的数字千变万化 , 解法也灵活多样 , 主要有摒除法、余数法、隐含唯一数法、数对法和回溯法 。 其中回溯法的基本思路是:从第一个空格开始试着填数 , 从1开始填 , 如果1不满足横排竖排九宫格无重复的话 , 就再填入2 , 以此类推 , 直到填入一个暂时满足规则的数 , 中断此格 , 移动到下一个空格重复这个过程 。 如果到达某个空格发现已经无数可选了 , 说明前面某一格填错了 , 那就返回上一格 , 从上一格的中断处继续往9尝试 , 直到回朔到填错的那一格 。 有兴趣的读者可自行深入研究 。 关键语句如图7所示 。
图7

模块四:采用ADB工具回填答案
自动完成手机端的答案回填工作 , 整体思路是使用ADB工具模拟手机点击 , 构建自定义函数click(x,y),实现手机端指定坐标的模拟点击事件 。 核心代码如图8所示 。
图8
有了数独解答结果 , 再使用ADB工具 , 就可以完成自动回填作业了 。 根据小游戏的操作流程 , 程序先点击需要回填的小方块 , 然后再点击下方的数字区域 。 核心代码如图9所示 。
中年|技术探索|全自动玩转小程序“数独”
本文插图

图9
程序测试优化
上述四个核心模块设计完毕后 , 再建立主程序 , 按照逻辑顺序加以连接 , 就可以进入测试修改阶段了 。 首先要用数据线将手机连接上计算机 , 然后安装相应的ADB驱动程序 , 接着就可以在计算机端运行编写完毕的主程序 。 如果一切顺利的话 , 你就可以愉快地看到 , 程序运行后 , 一只无形的“手指”在轻快地点击着手机屏幕 。 原先需要我们苦思冥想的数独题 , 被计算机用不了几秒 , 或几十秒钟 , 就神奇地解决了 。
《普通高中信息技术课程标准(2017年版)》除了设置选择性必修模块5“人工智能”外 , 在必修模块1中也专门引入了人工智能模块的学习 , 要实现“通过人工智能典型案例的剖析 , 了解智能信息处理的巨大进步和应用潜力 , 认识人工智能在信息社会中的重要作用” 。 如何在中小学开展人工智能教育将是我们面临的新问题 。 本案例结合了人工智能之OCR文字识别技术的应用 , 综合了图像切割编辑、移动设备控制、算法与程序设计等知识与技能的学习 , 并且能够激发探究的兴趣 , 是一个很好的学习案例 。
【中年|技术探索|全自动玩转小程序“数独”】


推荐阅读