使用Python编写数独游戏自动出题程序

数独是一个很好玩的游戏,可以锻炼推理能力。下面的代码可以自动生成数独游戏题目。

from random import shuffle, randrange

def generate(): # 初始网格 result = [] line = list(range(1,10)) for i in range(9): result.append(line) line.append(line.pop(0)) # 注意,这里的切片很重要 line = line[:]

# Python允许函数的嵌套定义 def switchRows(first, second): # 这里的括号和换行不是必须的 # 只是为了方便手机阅读 (result[first], result[second]) =\ (result[second], result[first])

def switchColumns(first, second): for index in range(9): (result[index][first], result[index][second]) =\ (result[index][second], result[index][first])

# 随机交换行 randomRows = list(range(9)) shuffle(randomRows) for i in range(0,7,2): switchRows(randomRows[i],\ randomRows[i+1])

# 随机交换列 randomColumns = list(range(9)) shuffle(randomColumns) for i in range(0,7,2): switchColumns(randomColumns[i],\ randomColumns[i+1])

# 随机清空一些格子

num = randrange(25, 50) positions = {(randrange(9),randrange(9))\ for i in range(num)} for row, col in positions: result[row][col] = ' '

return result

def output(grids): print('+'+'-+'*9) for row in range(9): line = '|'.join(map(str,grids[row])) line = line.join(['|']*2) print(line) print('+'+'-+'*9)

grids = generate() output(grids)

运行结果一:

运行结果二:

运行结果三:

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

写出优质Java代码的4个技巧

如果现在要求对你写的Java代码进行优化,那你会怎么做呢?作者在本文介绍了可以提高系统性能以及代码可读性的四种方法,如果你对此感兴趣,就让我们一起来看看吧。

7510
来自专栏Golang语言社区

麻将游戏数据结构和AI算法

用休息时间零零散散写完了网络麻将游戏,感觉其中有不少值得记录的东西。 基础数据结构     数据结构确定决定了程序的开发难易程度,就像是游戏的骨架,对于电脑AI...

1.1K20
来自专栏刁寿钧的专栏

10分钟梳理关系数据库基础知识(三):B+树

本文是《十分钟入门关系型数据库》系列技术文章的第三篇,主要介绍了数据库的B+树数据结构。

50600
来自专栏PPV课数据科学社区

【学习】《R实战》读书笔记(第二章)

“读书会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达...

36690
来自专栏SimpleAI

令人困惑的TensorFlow【1】

我叫 Jacob,是 Google AI Resident 项目的研究学者。我是在 2017 年夏天加入该项目的,尽管已经拥有了丰富的编程经验,并且对机器学习的...

11620
来自专栏吉浦迅科技

DAY38:阅读存储器修饰符

11730
来自专栏代码永生,思想不朽

utf8中文字符串的多模式匹配算法的优化

上个月接触到了我组的一个关于在海量文本中匹配字符串业务。读源代码时发现一些问题,并针对这些问题做了优化工作,效果非常明显。

51130
来自专栏蜉蝣禅修之道

CMU算法求网络瓶颈链路

18760
来自专栏Spark学习技巧

SparkSql的Catalyst之图解简易版

一,基本介绍 一言不合就上图。 ? 由上图可以看出Catalyst的作用尤为重要。MLPipelines Structured Streaming,GraphF...

22380
来自专栏Linyb极客之路

写出优质Java代码的4个技巧

如果现在要求对你写的Java代码进行优化,那你会怎么做呢?作者在本文介绍了可以提高系统性能以及代码可读性的四种方法,如果你对此感兴趣,就让我们一起来看看吧。

16310

扫码关注云+社区

领取腾讯云代金券