python 如何遍历二维平面中指定点的对角线上的点

解决思路

上一篇文章描写的八皇后问题中,一个难点就在于如何判断棋盘上指定位置的对角线上是否已经有皇后棋子。

这个问题的实质是如何在一个有限二维平面(8*8)上遍历一个指定坐标点(x,y)的对角线上的所有点。

注:平面的坐标系,y轴横向右侧延伸(→),x轴在y轴下侧竖向下延伸(↓)

一个点的对角线有四个方向,分别是左上、右上、左下、右下

如果用坐标的变化趋势来表示这四个方向的话,这个问题就显得一目了然了:

  1. 左上:x轴坐标与y轴坐标相对于点(x,y)都在递减
  2. 右上:x轴坐标在递减,y轴坐标在递增
  3. 左下:x轴坐标在递增,y轴坐标在递减
  4. 右下:x轴坐标与y轴坐标相对于点(x,y)都在递增……

阅读更多

python 八皇后问题的解法(深度搜索)

共本文介绍如何用深度搜索的方式求解8皇后(其实也可以求解N皇后)问题的解

八皇后问题描述

在国际想起的规则中,皇后能攻击八个方向上的棋子,而且不受距离限制。

皇后的攻击方向如下图所示:

八皇后问题则是在这样的规则上,求在一个8*8的棋盘上,如何放置8个互相不会攻击的皇后。

比如下图这样放置:

8个皇后,每个都不在其他皇后的上下左右以及斜向的方向上,所以互相不能攻击。

ps:我写的这份代码其实也可以求N皇后问题的解,只需修改MAXNUM为指定N值即可

代码原理

从棋盘的第一行开始,从左到右的查看每一列,当检测到当前点可以放置皇后,则将该点置为1。

然后查找下一行可……

阅读更多

python 将图片转换成ascii字符画

这是一个有趣的python小程序,可以图片转换成有ascii字符组成的图画。

效果

原图:

转换后:

原图:

转换后:

原图:

转换后:

原理:

使用了python的图片处理库pillow(PIL),使用PIL读取图片的每个像素点,然后采用计算公式将R,G,B三原色的色值计算为灰度值,之后用hash算法将灰度值映射到ascii的字符上去,然后将每个像素对应的字符输出即可生成图片对应的字符图画。

代码:

ascii.py

[code lang=python]
from PIL import Image
import argparse

#命令行输入参数处理
p……

阅读更多

python github上的关于跳一跳python作弊脚本的源码分析

最近跳一跳很火,我自己也玩的不亦乐乎,但是玩了三周了都没能上过400分。

之前就听说有人在github上用python写了辅助脚本来玩跳一跳,我趁着一天在公司吃完饭回来,闲着没事就去下了一份代码,在办公室把python环境搭起来,把依赖的库下好,跑起脚本体验了一把作弊的感觉~

( github项目地址:GitHub 跳一跳python脚本 )

第一把跳了1800多分,成绩也上传了,但是发现在同事那边看不到我的成绩,过了一会再看我这边,成绩也还原了。

难道脚本已经被微信ban掉了?

上网查了跳一跳封外挂的消息以后,看到了张小龙的原话:

“对于外挂来说,其实这种对抗是无止境的,你……

阅读更多

python 一个简单的猜数字小游戏

先介绍下游戏规则:

系统随机生成一个四位数字符串,每一位都由数字(0~9)组成,如 0123 5678 4679等(数字不会重复)
玩家有5次机会,每次输入长度为4的数字,系统给出匹配信息
如:
系统生成的字符串为 1234
(A代表这一位数猜对了,B代表这一位没猜对,但这个数字存在于答案中,X代表这个数字不存在于答案中)
玩家输入 1389 则匹配信息为 ABXX
玩家输入 1436 则匹配信息为 ABAX
玩家输入 1432 则匹配信息为 ABAB
玩家输入 1234 则匹配信息为 AAAA 则此时游戏成功
如果当输入次数达到指定的次数上限(可自行配置,一般取10次)后仍然匹配失败,则……

阅读更多