基于Python3的趣味数学问题解决方案
Pro1. 数独 (Sudoku)
根据九宫格盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个宫(3*3)内的数字均含1—9这9个数字。
Pro2. 幻方 (Magic Square)
幻方又称为魔方,方阵或厅平方。通常幻方由从1到n2 的连续整数组成,其中n为正方形的行或列的数目。将数填在纵横格数都相等的正方形图内,使得每一行、每一列和每一条对角线上的各个数之和都相等。
Pro3. 24点 (24 Point)
把4个整数通过加、减、乘、除以及括号运算,使最后的计算结果是24的一个数学游戏。
Pro4. 汉诺塔 (Tower of Hanoi)
法国数学家爱德华·卢卡斯曾编写过一个关于印度的古老传说:在世界中心贝拿勒斯的圣庙里,一块黄铜板上插着三根宝石针,印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。这就是汉诺塔问题。
Pro5. N皇后 (N Queens)
八皇后问题,是一个古老而著名的问题,是利用回溯算法求解的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处同一行、同一列或同一斜线上,问有多少种摆法。之后陆续有许多数学家对其进行研究,其中包括高斯和康托,并且将其推广为N皇后问题。
Pro6. 彩票号码优选方案 (Lottery Number)
彩票号码优选方案。双色球、大乐透号码的优选方案。
Pro7. 完美迷宫 (Perfect Maze)
所谓完美迷宫,就是没有回路,没有不可达区域的迷宫,并且迷宫中任意两个网格间都有唯一的路径。利用Prim算法,分别采取遍历墙和遍历网格的方法,动态展示迷宫的生成。并且利用A*算法获得从入口到出口的最佳路径,并在迷宫中展示出来。
Pro8. 凸包 (Convex Hull)
下面用比较通俗的方式,介绍下凸包:在一个二维坐标平面中,散列着一些点,将最外层的点连接起来构成的凸多边型,它能包含散列的所有的点,这个多边形就是这些点构成的点集的凸包。利用Graham Scan算法获得凸包(平面凸包),并动态展示凸包的形成过程。
Pro9. 一笔画完 (One Stroke)
从起始网格开始,用一笔划过所有可以走的节点,不能遗漏,也不能重复。利用DFS(深度优先搜索)和BFS(广度优先搜索)算法找到所有的路径,在寻找路径过程中添加了优化选择的函数,加速了计算过程。最总图示所有的解。涉及到的点有Python的尾递归优化以及基于多线程的计时器。
Pro10. 七桥 (Seven Bridge)
一笔划过图形中所有的边,边不能遗漏,同时也不能重复。利用欧拉定理以及Fleury(弗洛莱)算法解决。
