【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)
作品展示:

背景需求:
大4班20号说:我不会做这种(九宫格),我做的是小格子的,
他把手工纸翻过来,在反面自己画了矩阵格子。向我展示:
“我会做这种!”


原来他会的是3宫格、5宫格数独(行列5个数字)
“好的,下次老师准备 5宫格的数独题”
设计思考
【教学类-43-01】20231226 九宫格数独1.0-CSDN博客文章浏览阅读386次,点赞6次,收藏7次。【教学类-43-01】20231226 九宫格数独1.0https://blog.csdn.net/reasonsummer/article/details/135231228
那么怎么写5宫格数独呢?原来的9宫格代码是抄的,用了DEF函数,我没有看懂。
————————————————
# 版权声明:本文为CSDN博主「Vaeeeeeee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/m0_46366547/article/details/131334720def generate_sudoku_board():# 创建一个9x9的二维列表,表示数独棋盘board = [[0] * 9 for _ in range(9)]# 递归函数,用于填充数独棋盘的每个单元格def filling_board(row, col):# 检查是否填充完成整个数独棋盘if row == 9:return True# 计算下一个单元格的行和列索引next_row = row if col < 8 else row + 1next_col = (col + 1) % 9# 获取当前单元格在小九宫格中的索引box_row = row // 3box_col = col // 3# 随机生成1到9的数字numbers = random.sample(range(1, 10), 9)for num in numbers:# 检查行、列、小九宫格是否已经存在相同的数字if num not in board[row] and all(board[i][col] != num for i in range(9)) and all(num != board[i][j] for i in range(box_row*3, box_row*3+3) for j in range(box_col*3, box_col*3+3)):board[row][col] = num# 递归填充下一个单元格if filling_board(next_row, next_col):return True# 回溯,将当前单元格重置为0board[row][col] = 0return False# 填充数独棋盘filling_board(0, 0)return boarddef create_board(level): # level数字越大代表游戏难度越大"""生成一个随机的数独棋盘,空白格少"""board = generate_sudoku_board()board1 = copy.deepcopy(board)for i in range(81):row = i // 9col = i % 9if random.randint(0, 9) < level:board1[row][col] = 0return (board,board1)v = create_board(5)[1] print(v)# # >>>
# # [[1, 0, 0, 8, 0, 6, 0, 0, 4],
# # [5, 0, 0, 0, 0, 0, 0, 0, 0],
# # [0, 6, 0, 7, 0, 2, 0, 0, 1],
# # [2, 0, 0, 3, 7, 9, 0, 0, 0],
# # [7, 0, 0, 6, 8, 0, 0, 3, 2],
# # [0, 0, 5, 4, 0, 0, 7, 6, 9],
# # [6, 0, 7, 0, 0, 8, 9, 4, 0],
# # [3, 0, 1, 0, 4, 0, 0, 0, 0],
# # [9, 0, 4, 5, 6, 0, 0, 2, 7]]————————————————
版权声明:本文为CSDN博主「阿夏reasonsummer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/reasonsummer/article/details/135231228
1、研究5个数字的组合数量
我决定从最简答的1-5数字排列开始研究,
先在网络搜索,第一个跳出来的就是chatgpt写代码
突然想起“FB培训"时,老师介绍用AI对话大师,让它写Python代码“石头剪刀布”。于是我打开“AI对话大师”就问它“1-5有几种排列方法,Python”

它真的写出来了,最简单的permutations
好不容易写好了1-5的120种排列方法,然后我发现横向的5个有了,但是纵向的怎么选择选择,又难住了。
二、再问chatGPT——“五宫格数独Python”


VScode


新的代码和原来的一样,我发现它是用来解答已有的数独题的答案,而不是用来生成数独题目的。


所以换了一种问题:
Python设计一个九宫格数独程序,有一半空格
VS code 果然生成了不同的9宫格样式


AI对话大师设计的九宫格数独9*9
代码展示
'''
目的:九宫格数独2.0参考AI对话大师提示的代码(15正方形手工纸)
作者:阿夏(参考)
时间:2023年12月26日 20:35
'''import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,timeimport docx
from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor# 第一步:生成所9*9数独# 新建一个”装N份word和PDF“的临时文件夹
imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word'
if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在os.makedirs(imagePath1) # 若图片文件夹不存在就创建# 生成题库
import random
import copynum=int(input('生成几份\n'))
for z in range(num):def is_valid(board, num, row, col):# 检查行是否有重复数字for i in range(9):if board[row][i] == num:return False# 检查列是否有重复数字for i in range(9):if board[i][col] == num:return False# 检查所在的小方格是否有重复数字start_row = (row // 3) * 3start_col = (col // 3) * 3for i in range(3):for j in range(3):if board[start_row + i][start_col + j] == num:return Falsereturn Truedef solve_sudoku(board):for row in range(9):for col in range(9):if board[row][col] == 0:for num in range(1, 10):if is_valid(board, num, row, col):board[row][col] = numif solve_sudoku(board):return Trueboard[row][col] = 0return Falsereturn Truedef generate_sudoku():board = [[0] * 9 for _ in range(9)]solve_sudoku(board)# 随机选择一半格子作为空白格blanks = random.sample(range(81), 40)for i in blanks:row = i // 9col = i % 9board[row][col] = 0return boarddef print_sudoku(board):for row in range(9):for col in range(9):print(board[row][col], end=" ")print()# 生成一个有一半空格的数独sudoku = generate_sudoku()print("生成的数独:")print_sudoku(sudoku)P=[]# 做成列表样式for sd in sudoku:print(sd)for sd2 in sd:if sd2==0: # 如果某个元素==0,就替换成空格P.append('')else: # 如果某个元素非0,就写入本身的数字P.append(sd2)# print(sd2)print(len(P))# v = create_board(5)[1]
# print(v)# # # >>>
# # [[1, 0, 0, 8, 0, 6, 0, 0, 4],
# # [5, 0, 0, 0, 0, 0, 0, 0, 0],
# # [0, 6, 0, 7, 0, 2, 0, 0, 1],
# # [2, 0, 0, 3, 7, 9, 0, 0, 0],
# # [7, 0, 0, 6, 8, 0, 0, 3, 2],
# # [0, 0, 5, 4, 0, 0, 7, 6, 9],
# # [6, 0, 7, 0, 0, 8, 9, 4, 0],
# # [3, 0, 1, 0, 4, 0, 0, 0, 0],
# # [9, 0, 4, 5, 6, 0, 0, 2, 7]]# 第二步 读取word单元格写入# 新建worddoc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\数独正方形.docx') for j in range(1):# 制作"单元格"bg=[]for x in range(0,9): # 5 #数列 先宽 后高 for y in range(0,9): # 23s1='{}{}'.format('%02d'%x,'%02d'%y) #数列 先y 后x bg.append(s1) print(bg) print(len(bg))# # 房间模板(第一个表格)要写入的门牌号列表 table = doc.tables[j] # 表0,表2 写标题用的# 标题写入3、5单元格 for t in range(0,len(bg)): # 0-5是最下面一行,用来写卡片数字pp=int(bg[t][0:2]) # qq=int(bg[t][2:4])k=str(P[t]) # 提取list图案列表里面每个图形 t=索引数字print(pp,qq,k)# 图案符号的字体、大小参数run=table.cell(pp,qq).paragraphs[0].add_run(k) # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '黑体'#输入时默认华文彩云字体# run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(24) #是否加粗# run.font.color.rgb = RGBColor(150,150,150) #数字小,颜色深0-255run.font.color.rgb = RGBColor(50,50,50) #数字小,颜色深0-255run.bold=True# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER#居中 #
# # doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word time.sleep(2)from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.pdf".format('%02d'%(z+1)) # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfMerger
target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/数独/(打印合集)05正方形数独2.0 9乘9({}人{}份).pdf" .format(num,num))file_merger.close()
# doc.Close()# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word') #递归删除文件夹,即:删除非空文件夹


去0后,样式

感悟;
第一次用chatGPT写Python代码,成效斐然
用这个9宫格样式,再研究6宫格,4宫格,5宫格等其他样式。提供简单一些的幼儿数独推理题
相关文章:
【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)
作品展示: 背景需求: 大4班20号说:我不会做这种(九宫格),我做的是小格子的, 他把手工纸翻过来,在反面自己画了矩阵格子。向我展示: “我会做这种!” 原来他…...
麒麟Kylin服务器版-破解root密码
一、单用户模式修改root密码 1.重启服务器系统后,将光标移动到第二项,按【e】键进入用户登录页面。 2.在【username】下方所在行输入root名称,【password】下方所在行输入密码Kylin123123后,进入编辑模式。代码如下: …...
cnPuTTY 0.80.0.1—PuTTY Release 0.80中文版本简单说明~~
2023-12-18 官方发布了PuTTY 0.80本次发布主要是针对Terrapin攻击(CVE-2023-48795)的修改发布。 更多详细的内容请查看PuTTY Change Log。 有关Terrapin攻击可用简单参考:警告!!!Terrapin攻击(CVE-2023-48795)~~~ 为了缓解此漏洞…...
向爬虫而生---Redis 拓宽篇1 < pipeline传输效率>
前言: 都知道,Redis是一款高效的内存数据库;每条命令都能很快响应,但是如果我们把服务器布在网络上,每次一个命令来回传送也是需要花费时间的; pipeline传输技术则是进一步提高Redis的性能和传输效率的一种方法。 正文: pipeline与普通命令发送方式的区别 Pipeline是一种机制&…...
Unity Hub 无法激活许可证
烦死了~ 😵💫 卸载UnityHub, 安装旧版本👈激活许可证, 如果出现旧版本无法识别Editor的情况需要卸载了再装最新版本的UnityHub...
数据分析求职-如何准备
今天咱们来聊一聊数据分析岗位求职到底需要准备什么?什么时间准备?该如何准备? 1. 求职时间轴 上图很清楚地把求职时间轴展示出来了,重复的话也不多说了,有两点想和同学们重点提下: 1)一定一定…...
新手能掌握 PyTorch 的填充技术:深入理解反射、复制、零值和常数填充
目录 torch.nn子模块详解 nn.ReflectionPad1d 参数说明: 形状(Shape): 使用示例: 注意事项: nn.ReflectionPad2d 参数说明: 形状(Shape): 使用示例…...
地震烈度速报与预警工程成功案例的经验分享 | TDengine 技术培训班第一期成功落地
近日,涛思数据在成都开设了“国家地震烈度速报与预警工程数据库 TDengine、消息中间件 TMQ 技术培训班”,这次培训活动共分为三期,而本次活动是第一期。其目标是帮助参与者深入了解 TDengine 和 TMQ 的技术特点和应用场景,并学习如…...
集群部署篇--Redis 集群动态伸缩
文章目录 前言一、redis 节点的添加1.1 redis 的实例部署:1.2 redis 节点添加:1.3 槽位分配:1.4 添加从节点: 二、redis 节点的减少2.1 移除主节点2.1.1 迁移槽位2.1.1 删除节点: 三、redis 删除节点的重新加入3.1 加入…...
excel中解决多行文本自动调整行高后打印预览还是显示不全情况
注意:此方法对于多行合并后单元格行高调整不适用,需要手动调整,如大家有简便方法,欢迎评论。 一、调整表格为自动调整行高 1)点击此处全选表格 2)在第一行序号单元格的下端,鼠标成黑十字时&am…...
策略模式+责任链模式配合Nacos实现参数校验链
1、业务场景 在SpringBoot项目中,针对接收的参数信息,根据需求要进行以下校验: 校验客户的apikey是否合法;校验请求的ip地址是否是白名单;校验短信的签名;校验短信的模板;校验手机号的格式合法…...
‘react-native‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:没有下载react-native 解决下载react-native npm i -g react-native-cli...
c语言:求最小公倍数|练习题
一、题目 输入两个数,求两数的最小公倍数。 如图: 二、思路分析 1、先知道两个数里的最小值(比如:9和6,取6) 2、用2到6,5个数,同时除以9和6,得最小公约数:3 3、用9除33,6除32。得最小…...
嵌入式系统(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位
上一篇文章我们介绍了嵌入式系统 嵌入式系统(Embedded System)是一种特定用途的计算机系统,它通常嵌入在更大的产品或系统中,用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成,旨在满足特定的需求&…...
NLP基础——中文分词
简介 分词是自然语言处理(NLP)中的一个基本任务,它涉及将连续的文本序列切分成多个有意义的单元,这些单元通常被称为“词”或“tokens”。在英语等使用空格作为自然分隔符的语言中,分词相对简单,因为大部分…...
阿里云服务器Alibaba Cloud Linux 3镜像版本大全说明
Alibaba Cloud Linux阿里云打造的Linux服务器操作系统发行版,Alibaba Cloud Linux完全兼容完全兼容CentOS/RHEL生态和操作方式,目前已经推出Alibaba Cloud Linux 3,阿里云百科aliyunbaike.com分享Alibaba Cloud Linux 3版本特性说明ÿ…...
WebGIS开发的常见框架及优缺点
WebGIS开发引擎的发展历程: 内容来自公众号:Spatial Data 地图API分类 WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以下面要讨论下基于Web的地图API分类及应用场景。Web上的Map API主要分类ÿ…...
ansible 配置jspgou商城上线(MySQL版)
准备环境 准备两台纯净的服务器进行,在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…...
算法导论复习——CHP22 分支限界法
LIFO和FIFO分枝-限界法 采用宽度优先策略,在生成当前E-结点全部儿子之后再生成其它活结点的儿子,且用限界函数帮助避免生成不包含答案结点子树的状态空间的检索方法。两种基本设计策略: FIFO检索:活结点表采用队列&#x…...
鸿蒙系列--装饰器
一、基础UI组件结构 每个UI组件需要定义为Component struct对象,其内部必须包含一个且只能包含一个build(){}函数,用于绘制UI;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct,页面的入口…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

