【教学类-52-17】20250803动物数独_空格尽量分散(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套

背景需求:

前期制作了动物数独N宫格,包含四种大小尺寸,

【教学类-52-16】20241126动物数独_商品修正版(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套_5x5格子除去一个24格子份6份取14个连3条线-CSDN博客文章浏览阅读531次。【教学类-52-16】20241126动物数独_商品修正版(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套_5x5格子除去一个24格子份6份取14个连3条线 https://blog.csdn.net/reasonsummer/article/details/144041503?spm=1011.2415.3001.5331

但是,我看到生成的图片中,数独空格是随机抽取的,因此常出现,一行连续2-3空、一列连续2-3空的情况,增加了破译难度,我个人希望,空格分散一点,尽量不要有连续2空的情况。

我希望横向、纵向不要有连续多个空格,空格尽量分散。

用deepseek修改原来的代码。

前后修改了一天,生成50多次,终于写出一个可以使用的代码。

代码展示:

# -*- coding:utf-8 -*-

'''
制作动物/脸谱数独N宫格通用版(3-10的黏贴关卡 A4 1图2图6图的所有组合 还有一个限定A4大小的0图(3-6宫格)
1.无答案:9种3:3,两两组合
2.有答案:27种 3:3:3,三三组合(实际需要其中9种)
3.横竖两个不能都是空格,空格尽量分散排列,如9格,目前1-5可以分散,空额不相连,6-9不行)
作者:AI对话大师,deepseek、阿夏
时间:2025年08月03日
'''



import os
import time
from docx import Document
from docx.shared import Cm, Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from win32com.client import constants, gencache
from win32com.client.gencache import EnsureDispatch
from datetime import datetime
import random
import shutil
import xlwt
import xlrd
from PyPDF2 import PdfMerger
from docx.shared import Pt, Cm, RGBColor
from docx.oxml.shared import qn


num=1
hsall=int(input('几宫格?(3-10)\n'))
start=0
end=hsall
start_time = datetime.now()
hs=hsall

path=fr'C:\Users\jg2yXRZ\OneDrive\桌面\20250802动物数独N宫格原始6图'

A4size=[6.5,4.88,3.9,3.25,2.79,2.44,2.17]
A4gz=[3,4,5,6,7,8,9]
A4pg=[3,4,5,6,7,8,9]
A4gzs=[3,4,5,6,7,8,9]

psize=[19.6,14.1,9.39]
gzsize=[6.4,4.8,3.84,3.2,2.74,2.39,2.12,1.91]
gzsgg=list(range(3, 10))
pg=[1,2,6]
gzs=[1,2,2]

print('-----第一板块、动物操作卡(大图片卡一页1图、1页2图 一页6图)-------')

# Get page settings based on hs value
for w in range(len(A4gz)):
    if hs == A4gz[w]:
        psize.append(A4size[w])
        pg = [1, 2, 6, A4pg[w]]
        gzs = [1, 2, 2, A4gzs[w]]

k = ['1图关卡', '2图关卡', '6图关卡', f'A4的{hs}图卡片']
print(k)

for pt in range(len(pg)):
    # Create temp folders
    temp_word_path = os.path.join(path, '零时Word')
    temp_pdf_path = os.path.join(path, '05操作卡pdf')
    os.makedirs(temp_word_path, exist_ok=True)
    os.makedirs(temp_pdf_path, exist_ok=True)

    # Load template document
    doc = Document(os.path.join(path, f'动物数独({k[pt]}).docx'))
    table = doc.tables[0]
    
    # Get animal images
    pic_folder = os.path.join(path, '02动物图片')
    pic_list = [os.path.join(pic_folder, f) for f in os.listdir(pic_folder)][start:end] * hs
    
    # Group images based on layout
    group_size = pg[pt]*pg[pt] if pt == 3 else pg[pt]
    groups = [pic_list[i:i + group_size] for i in range(0, len(pic_list), group_size)]
    
    for group_idx, group in enumerate(groups):
        doc = Document(os.path.join(path, f'动物数独({k[pt]}).docx'))
        table = doc.tables[0]
        
        for cell_idx, img_file in enumerate(group):
            row = int(cell_idx / gzs[pt])
            col = cell_idx % gzs[pt]
            cell = table.cell(row, col)
            cell.paragraphs[0].clear()
            
            if os.path.exists(img_file):
                run = cell.paragraphs[0].add_run()
                run.add_picture(img_file, width=Cm(psize[pt]), height=Cm(psize[pt]))
                cell.paragraphs[0].alignment = 1
        
        # Add title for A4 layout
        if pt == 3:
            title_table = doc.tables[1]
            title_cell = title_table.cell(0, 0)
            title_cell.text = f'动物数独 {hs}*{hs}   操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值