【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)

本文主要是介绍【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

背景需求:

1、以前做单元格填充,都是制作N个分开的单元格

(表格=8)

74f42848291e43a3a8259171792f8e55.png

2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的,实际还是一个表格(0)

94c22218bf8b442cb052184b87d0310a.png

我要提取中间4套5*5的坐标,就需要写四次XY

0cfd6d94088544ee88301e0e08a78be5.png

如果是6*3、9*9,这样的写法就太长了,要写6份,9份

所以,我需要设计一个简略的遍历代码,实现所有填充单元格坐标的提取

 

设计过程:

工具:AI对话大师

第1问

2449b9bbf4d949b1b7d5969e18599e2c.png

第2问

bf2c30ff11bd4f8ca02b5bad414bf872.png

 

第3问

064d107addfc4f15a68f50835b3a8f2c.png第4问

86142f4cec07495e9a0c6d83ec2f623c.png第5问——终于出现了我需要的结果

e10593dc8a7b40089d1876886f6efea7.png

测试1.1:3*3宫格(原始)

# 测试11*11格,2*2一共4套3*3 宫格grid_size = 7
subgrid_size = 3start_coordinates = [(0, 0), (0, 4), (4, 0), (4, 4)]
cell_coordinates = []for start_coord in start_coordinates:i, j = start_coordsubgrid_coordinates = []for x in range(subgrid_size):for y in range(subgrid_size):subgrid_coordinates.append((i + x, j + y))cell_coordinates.append(subgrid_coordinates)bg=[]# 打印结果
for coordinates in cell_coordinates:# print(coordinates) for c in  coordinates:# print(c)        # 元组 (1, 2) 样式s = ''.join(map(str, c))     # 元组 (1, 2) 转换为字符串 '12'# print(str(s))        #  '12'a1='%02d'%int(s[0])   #  '01'a2='%02d'%int(s[1])   #  '02'bg.append('{}{}'.format(a1,a2))  #  '0102'
print(bg)# 左上 第1套
# ['0000', '0001', '0002', 
# '0100', '0101', '0102', 
# '0200', '0201', '0202', # 右上 第2套
# '0004', '0005', '0006', 
# '0104', '0105', '0106', 
# '0204', '0205', '0206', # 左下 第3套
# '0400', '0401', '0402',
# '0500', '0501', '0502',
# '0600', '0601', '0602',# 右下 第4套
# '0404', '0405', '0406', 
# '0504', '0505', '0506', 
# '0604', '0605', '0606']

运行结果

c5daf163470a43c08542f7298cc44338.png测试2:3*3宫格(改坐标起始参数)

# 测试11*11格,2*2一共4套3*3 宫格
'''
目的:数独09 N宫格X乘Y套单元格计算,如何在一个表格里,找出所有填数字的单元格
以“3宫格”做2*2=4套,“3宫格”做3*2=6套为例
作者:阿夏(参考)
时间:2023年12月31日 13:35
'''
# import zfill# 几宫格
gg = 3
# 底边几套.底边看有2份
db=3
# 侧边几套 侧边看也是2份
cb=2# 棋盘格子数量,# 如果正方形:底边2*侧边2,就是3*3宫格 2*2=4套,底边边格子数量就是3*2+1=7,侧边格子数量就是3*2+1=7,
# 如果长方形:底边3*侧边2,就是3*3宫格,3*2=6套 底边格子数量就是3*3+2=11,侧边格子数量就是3*2+1=7,
# if db==cb:
db_size = gg*db+(db-1)
cb_size=  gg*cb+(cb-1)
print('{}宫格排列底{}侧{}共{}套,底边格子数{}'.format(gg,db,cb,db*cb,db_size ))
print('{}宫格排列底{}侧{}共{}套,侧边格子数{}'.format(gg,db,cb,db*cb,cb_size ))# 确定每个宫格的左上角坐标 00 04 40  44
bgszm=[]
for a in range(0,cb_size,gg+1):    # 0-11每隔4,写一个坐标  侧边yfor b in range(0,db_size,gg+1):  # 0-11每隔4,写一个坐标  侧边xbgszm.append('{}{}'.format('%02d'%a,'%02d'%b))
print(bgszm)
# 3宫格排列底3侧2共6套,底边格子数11
# 3宫格排列底3侧2共6套,侧边格子数7
# ['0000', '0004', '0008', '0400', '0404', '0408']# 转为元祖
start_coordinates = [(int(s[0:2]), int(s[2:4])) for s in bgszm]
cell_coordinates = []# 推算每个起始格子后面的单元格数字
for start_coord in start_coordinates:i, j = start_coordsubgrid_coordinates = []for x in range(gg):for y in range(gg):subgrid_coordinates.append((i + x, j + y))cell_coordinates.append(subgrid_coordinates)# 打印结果(元祖样式)
bg=[]
for coordinates in cell_coordinates:# print(coordinates)     # [(4, 8), (4, 9), (4, 10), (5, 8), (5, 9), (5, 10), (6, 8), (6, 9), (6, 10)]for c in  coordinates:print(c)        # 元组 (1, 2) 样式s = ''.join(str(num).zfill(2) for num in c)   # zfill将元组 (1, 2) 转换为字符串 '0102' 特别是(5,10)这种必须转成2个数字0510print(str(s))        #  '12'bg.append(s)  #  '0102'
print(bg)# # 3*3宫格的2*2=4套题坐标
# # 左上 第1套
# # ['0000', '0001', '0002', 
# # '0100', '0101', '0102', 
# # '0200', '0201', '0202', # # 右上 第2套
# # '0004', '0005', '0006', 
# # '0104', '0105', '0106', 
# # '0204', '0205', '0206', # # 左下 第3套
# # '0400', '0401', '0402',
# # '0500', '0501', '0502',
# # '0600', '0601', '0602',# # 右下 第4套
# # '0404', '0405', '0406', 
# # '0504', '0505', '0506', 
# # '0604', '0605', '0606']# # 3*3宫格的3*2=6套题坐标# # 3宫格排列底3侧2共6套,底边格子数11
# # 3宫格排列底3侧2共6套,侧边格子数7
# # 6套题的首字坐标['0000', '0004', '0008', '0400', '0404', '0408']
# # 6套题的全部坐标# ['0000', '0001', '0002', 
#  '0100', '0101', '0102', 
#  '0200', '0201', '0202', # '0004', '0005', '0006',
# '0104', '0105', '0106', 
# '0204', '0205', '0206', # '0008', '0009', '0010', 
# '0108', '0109', '0110',
# '0208', '0209', '0210',# '0400', '0401', '0402',
# '0500', '0501', '0502', 
# '0600', '0601', '0602', # '0404', '0405', '0406',
# '0504', '0505', '0506', 
# '0604', '0605', '0606', # '0408', '0409', '0410', 
# '0508', '0509', '0510', 
# '0608', '0609', '0610']

 

3宫格两款:

1、  3宫格  4套(2*2)正方形,

 

f91edbe5b90e47fc8614fd2c7cf74a02.png

85848c90db4c4e87bdfb238bb078766e.png

7cb663c8b8d64dc7b606d582983238f7.png

2、3宫格  6套(3*2)长方形

150883d880f741d08772437d9e390857.png

ccb55de845ee40d9bb9d660b852e397d.png

917edbdbf315461586d7eb03fd35b93d.png

感悟:

代码里面的技术难点 都是用Chat GDP AI对话生成的,提高了数据搜索的效率

2aae12d6dec845af8afd2b42c0270a13.png

ea8f98cf498a41f19122b25399f04922.png76eeb65be20843298b168c06263cd96c.pngb772ed33e18d4aab942c0de675a48df2.png

 

这篇关于【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559660

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库