p2p網(wǎng)站開發(fā)的多少錢一個產(chǎn)品的網(wǎng)絡(luò)營銷方案
作品展示:
背景需求:
大4班20號說:我不會做這種(九宮格),我做的是小格子的,
他把手工紙翻過來,在反面自己畫了矩陣格子。向我展示:
“我會做這種!”
原來他會的是3宮格、5宮格數(shù)獨(行列5個數(shù)字)
“好的,下次老師準(zhǔn)備 5宮格的數(shù)獨題”
設(shè)計思考
【教學(xué)類-43-01】20231226 九宮格數(shù)獨1.0-CSDN博客文章瀏覽閱讀386次,點贊6次,收藏7次?!窘虒W(xué)類-43-01】20231226 九宮格數(shù)獨1.0https://blog.csdn.net/reasonsummer/article/details/135231228
那么怎么寫5宮格數(shù)獨呢?原來的9宮格代碼是抄的,用了DEF函數(shù),我沒有看懂。
————————————————
# 版權(quán)聲明:本文為CSDN博主「Vaeeeeeee」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
# 原文鏈接:https://blog.csdn.net/m0_46366547/article/details/131334720def generate_sudoku_board():# 創(chuàng)建一個9x9的二維列表,表示數(shù)獨棋盤board = [[0] * 9 for _ in range(9)]# 遞歸函數(shù),用于填充數(shù)獨棋盤的每個單元格def filling_board(row, col):# 檢查是否填充完成整個數(shù)獨棋盤if row == 9:return True# 計算下一個單元格的行和列索引next_row = row if col < 8 else row + 1next_col = (col + 1) % 9# 獲取當(dāng)前單元格在小九宮格中的索引box_row = row // 3box_col = col // 3# 隨機生成1到9的數(shù)字numbers = random.sample(range(1, 10), 9)for num in numbers:# 檢查行、列、小九宮格是否已經(jīng)存在相同的數(shù)字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# 回溯,將當(dāng)前單元格重置為0board[row][col] = 0return False# 填充數(shù)獨棋盤filling_board(0, 0)return boarddef create_board(level): # level數(shù)字越大代表游戲難度越大"""生成一個隨機的數(shù)獨棋盤,空白格少"""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]]————————————————
版權(quán)聲明:本文為CSDN博主「阿夏reasonsummer」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/reasonsummer/article/details/135231228
1、研究5個數(shù)字的組合數(shù)量
我決定從最簡答的1-5數(shù)字排列開始研究,
先在網(wǎng)絡(luò)搜索,第一個跳出來的就是chatgpt寫代碼
突然想起“FB培訓(xùn)"時,老師介紹用AI對話大師,讓它寫Python代碼“石頭剪刀布”。于是我打開“AI對話大師”就問它“1-5有幾種排列方法,Python”
它真的寫出來了,最簡單的permutations
好不容易寫好了1-5的120種排列方法,然后我發(fā)現(xiàn)橫向的5個有了,但是縱向的怎么選擇選擇,又難住了。
二、再問chatGPT——“五宮格數(shù)獨Python”
VScode
新的代碼和原來的一樣,我發(fā)現(xiàn)它是用來解答已有的數(shù)獨題的答案,而不是用來生成數(shù)獨題目的。
所以換了一種問題:
Python設(shè)計一個九宮格數(shù)獨程序,有一半空格
VS code 果然生成了不同的9宮格樣式
AI對話大師設(shè)計的九宮格數(shù)獨9*9
代碼展示
'''
目的:九宮格數(shù)獨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 # 導(dǎo)入枚舉常數(shù)模塊
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數(shù)獨# 新建一個”裝N份word和PDF“的臨時文件夾
imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\數(shù)獨\零時Word'
if not os.path.exists(imagePath1): # 判斷存放圖片的文件夾是否存在os.makedirs(imagePath1) # 若圖片文件夾不存在就創(chuàng)建# 生成題庫
import random
import copynum=int(input('生成幾份\n'))
for z in range(num):def is_valid(board, num, row, col):# 檢查行是否有重復(fù)數(shù)字for i in range(9):if board[row][i] == num:return False# 檢查列是否有重復(fù)數(shù)字for i in range(9):if board[i][col] == num:return False# 檢查所在的小方格是否有重復(fù)數(shù)字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()# 生成一個有一半空格的數(shù)獨sudoku = generate_sudoku()print("生成的數(shù)獨:")print_sudoku(sudoku)P=[]# 做成列表樣式for sd in sudoku:print(sd)for sd2 in sd:if sd2==0: # 如果某個元素==0,就替換成空格P.append('')else: # 如果某個元素非0,就寫入本身的數(shù)字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\桌面\數(shù)獨\數(shù)獨正方形.docx') for j in range(1):# 制作"單元格"bg=[]for x in range(0,9): # 5 #數(shù)列 先寬 后高 for y in range(0,9): # 23s1='{}{}'.format('%02d'%x,'%02d'%y) #數(shù)列 先y 后x bg.append(s1) print(bg) print(len(bg))# # 房間模板(第一個表格)要寫入的門牌號列表 table = doc.tables[j] # 表0,表2 寫標(biāo)題用的# 標(biāo)題寫入3、5單元格 for t in range(0,len(bg)): # 0-5是最下面一行,用來寫卡片數(shù)字pp=int(bg[t][0:2]) # qq=int(bg[t][2:4])k=str(P[t]) # 提取list圖案列表里面每個圖形 t=索引數(shù)字print(pp,qq,k)# 圖案符號的字體、大小參數(shù)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) #數(shù)字小,顏色深0-255run.font.color.rgb = RGBColor(50,50,50) #數(shù)字小,顏色深0-255run.bold=True# paragraph.paragraph_format.line_spacing = Pt(180) #數(shù)字段間距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑體')#將輸入語句中的中文部分字體變?yōu)槿A文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER#居中 #
# # doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\數(shù)獨\零時Word\{}.docx'.format('%02d'%(z+1)))#保存為XX學(xué)號的電話號碼word time.sleep(2)from docx2pdf import convert# docx 文件另存為PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/數(shù)獨/零時Word/{}.docx".format('%02d'%(z+1))# 要轉(zhuǎn)換的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/數(shù)獨/零時Word/{}.pdf".format('%02d'%(z+1)) # 要生成的文件:不存在# 先創(chuàng)建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再轉(zhuǎn)換往PDF中寫入內(nèi)容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/桌面/數(shù)獨/零時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/桌面/數(shù)獨/(打印合集)05正方形數(shù)獨2.0 9乘9({}人{}份).pdf" .format(num,num))file_merger.close()
# doc.Close()# # print('----------第5步:刪除臨時文件夾------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/數(shù)獨/零時Word') #遞歸刪除文件夾,即:刪除非空文件夾