导航:首页 > 编程语言 > python数独实现

python数独实现

发布时间:2022-12-14 00:30:22

python能做什么有趣的东西

python能做什么有趣的东西?下面给大家介绍35个Python实例:
1. Python3 实现图片识别
2. Python3 图片隐写术

3. 200 行 Python 代码实现 2048
4. Python实现3D建模工具
5. 使用 Python 定制词云
相关推荐:《Python教程》
6. Python3 智能裁切图片
7.微信变为聊天机器人
8. 使用 Python 解数学方程
9. 使用 Python 创建照片马赛克
10. Python 基于共现提取《釜山行》人物关系
11. Python 气象数据分析:《Python 数据分析实战》
12. NBA常规赛结果预测:利用Python进行比赛数据分析
13. Python 的循环语句和隐含波动率的计算
14. K-近邻算法实现手写数字识别系统
15. 数独游戏的 Python 实现与破解
16. 基于 Flask 与 MySQL 实现番剧推荐系

17. Python 实现英文新闻摘要自动提取
18. Python 解决哲学家就餐问题
19. Ebay 在线拍卖数据分析
20. 神经网络实现人脸识别任务
21. 使用 Python 解数学方程
22. Python3 实现火车票查询工具
23. Python 实现端口扫描器
24. Python3 实现可控制肉鸡的反向Shell
25. Python 实现 FTP 弱口令扫描器
26. 基于PyQt5 实现地图中定位相片拍摄位置
27. Python实现网站模拟登陆
28.Python实现简易局域网视频聊天工具
29. 基于 TCP 的 python 聊天程序
30. Python3基于Scapy实现DDos
31. 高德API + Python 解决租房问题
32. 基于 Flask 与 RethinkDB 实现TODO List
33. Python3 实现简单的 Web 服务器
34. Python 实现 Redis 异步客户端
35. 仿 StackOverflow 开发在线问答系统

㈡ 数独算法思路

数独(数和)(英:Cross Sums;日:カックロ)是一种数学智力游戏。数和把填字游戏和数独巧妙地结合在一起,采用填字游戏式的棋盘,解题时在空格中填上1-9的数字。这种游戏不仅需要逻辑思维能力,还需要一点加法运算。

电脑自动生成数独游戏的谜题

要得出所有满足条件的组合确实不是件容易的事情(主要是很多,打印起来很慢) 。但偶们的目标只是每次能得到一个新的组合,然后从格子里面随机遮掉一些数字就可以了。所以只需要在解数独游戏算法的基础上稍作修改即可。

所以,算法的步骤是:

1.往第一行或第一列随机填1-9的数字

2.调用解数独算法得到一个结果

3.每行随机遮掉1-8个数字。如果需要较大的难度,也可以将1-8改为2-8或3-8,等等。

以下是console工程的代码:

// sudoku.cpp : 定义控制台应用程序的入口点。
// by superarhow([email protected])

#include "stdafx.h"

#include "conio.h"

#define SUCCESS 1
#define _FAILED 0

/* 地图类型9*9的char,每个char从0-9,0表示待填 */
typedef char MAPTYPE[9][9];
/* 行数据,同时用作“可能性”数据。如LINETYPE a; 当a[0]为真时表示
当前位置可填1,a[1]为真时表示可填2,以此类推 */
typedef char LINETYPE[9];

typedef void (*ONMAPOKCALLBACK)(MAPTYPE map);

/* 打印地图 */
void mp_map(MAPTYPE dest)
{
for ( int j = 0; j < 9; j++ )
{
for ( int i = 0; i < 9; i++ )
{
printf("%d ", dest[i][j]);
}
printf("\n");
}
printf("\n");
}

int fill_line(MAPTYPE dest, int line, ONMAPOKCALLBACK callback);

/* 填下一个格子。本行的可能性已在调用前算好,要考虑的是列的可能性和九宫格的可能性 */
/* nums_possible : array (0-8) means possible of number (1-9) */
int fill_pos(MAPTYPE dest, LINETYPE nums_possible, int line, int pos, ONMAPOKCALLBACK callback)
{
if ( pos >= 9 )
{
return fill_line(dest, line + 1, callback);
}
if ( dest[pos][line] != 0 ) return fill_pos(dest, nums_possible, line, pos + 1, callback);
for ( int i = 0; i < 9; i++ )
{
if ( !nums_possible[i] ) continue;
/* 检查本列是否重复 */
int vetical_failed = 0;
for ( int j = 0; j < 9; j++ )
if ( dest[pos][j] == i + 1 )
{
vetical_failed = 1;
break;
}
if ( vetical_failed ) continue;
/* 检查九宫格是否重复 */
int nine_failed = 0;
int m = pos / 3;
int n = line / 3;
m *= 3;
n *= 3;
for ( int y = n; y < n + 3; y++ )
{
for ( int x = m; x < m + 3; x++ )
{
if ( dest[x][y] == i + 1 )
{
nine_failed = 1;
break;
}
}
if ( nine_failed ) break;
}
if ( nine_failed ) continue;
/* all ok, try next position */
dest[pos][line] = i + 1;
nums_possible[i] = 0;
if ( fill_pos(dest, nums_possible, line, pos + 1, callback) )
{
/* 本行已全部OK,尝试下一行 */
if ( fill_line(dest, line + 1, callback) ) return SUCCESS;
/* 下一行失败,重新尝试本位置的剩余可能性 */
}
nums_possible[i] = 1;
dest[pos][line] = 0;
}
return _FAILED;
}

/* 填下一行 */
int fill_line(MAPTYPE dest, int line, ONMAPOKCALLBACK callback)
{
if ( line >= 9 )
{
/* map */
callback(dest);
return SUCCESS;
}
LINETYPE nums;
LINETYPE saveline;
/* calc possibility(for the current line) */
for ( int i = 0; i < 9; i++ ) nums[i] = 1; /* all can be */
for ( int i = 0; i < 9; i++ )
{
char n = dest[i][line];
/* save line */
saveline[i] = dest[i][line];
if ( n != 0 ) nums[n - 1] = 0; /* appears */
}
if ( !fill_pos(dest, nums, line, 0, callback) )
{
/* restore line */
for ( int i = 0; i < 9; i++ ) dest[i][line] = saveline[i];
return _FAILED;
}
return SUCCESS;
}

MAPTYPE g_result;

void on_map_ok(MAPTYPE map)
{
memcpy(g_result, map, sizeof(MAPTYPE));
}

#include "windows.h"

int _tmain(int argc, _TCHAR* argv[])
{
MAPTYPE dest;
memset(dest, 0, sizeof(MAPTYPE));
srand( GetTickCount() );
/* 随机填充第一行 */
char ch[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for ( int i = 0; i < 9; i++ )
{
int p = rand() % 9;
char t = ch[p];
ch[p] = ch[i];
ch[i] = t;
}
for ( int i = 0; i < 9; i++ ) dest[i][0] = ch[i];
if ( fill_line(dest, 0, on_map_ok) )
{
/* 修剪掉一些块 */
for ( int i = 0; i < 9; i++ )
{
/* 调整n的取值范围可改变难度 %6 + 3是比较难的 */
int n = (rand() % 6) + 3;
for ( int j = 0; j < 9; j++ ) ch[j] = j; /* ch: index to erase */
for ( int j = 0; j < 9; j++ )
{
int p = rand() % 9;
char t = ch[p];
ch[p] = ch[i];
ch[i] = t;
}
for ( int j = 0; j < n; j++ ) g_result[ch[j]][i] = 0;
}
mp_map(g_result);
}
getch();
return 0;
}

看完这些,你对数独的算法了解了吗?

㈢ python可以做哪些有趣的事情

1. Python3 实现色情图片识别

2. Python3 图片隐写术

3. 200 行 Python 代码实现 2048

4. Python实现3D建模工具

5. 使用 Python 定制词云

6. Python3 智能裁切图片

7.微信变为聊天机器人

8. 使用 Python 解数学方程

9. 使用 Python 创建照片马赛克

10. Python 基于共现提取《釜山行》人物关系

11. Python 气象数据分析:《Python 数据分析实战》

12. NBA常规赛结果预测:利用Python进行比赛数据分析

13. Python 的循环语句和隐含波动率的计算

14. K-近邻算法实现手写数字识别系统

15. 数独游戏的 Python 实现与破解

16. 基于 Flask 与 MySQL 实现番剧推荐系

17. Python 实现英文新闻摘要自动提取

18. Python 解决哲学家就餐问题

19. Ebay 在线拍卖数据分析

20. 神经网络实现人脸识别任务

21. 使用 Python 解数学方程

22. Python3 实现火车票查询工具

23. Python 实现端口扫描器

24. Python3 实现可控制肉鸡的反向Shell

25. Python 实现 FTP 弱口令扫描器

26. 基于PyQt5 实现地图中定位相片拍摄位置

27. Python实现网站模拟登陆

28.Python实现简易局域网视频聊天工具

29. 基于 TCP 的 python 聊天程序

30. Python3基于Scapy实现DDos

31. 高德API + Python 解决租房问题

32. 基于 Flask 与 RethinkDB 实现TODO List

阅读全文

与python数独实现相关的资料

热点内容
汇编程序员待遇 浏览:357
怎么批量有顺序的命名文件夹 浏览:209
杭州程序员健身 浏览:17
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362