日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python解初中题_用python解一道数独小题

發布時間:2024/10/8 python 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python解初中题_用python解一道数独小题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

個人的第一篇博文,還請多多支持,不當之處,還請多多指教。(以后有精力還會寫更多的文章)

本人是一名大一狗,目前為止學了半年python,對python也就有一點點的了解,沒事愛編寫一些小程序玩,不過都是些簡單的小程序啦。。。在大佬面前不值一提。

今天元宵節,早上看了我關注的叫三樂大掌柜的up的一個視頻,將1-25無重復的填入5?5的方格紙中,使每一行、每一列和兩條對角線的和都相等。

這題有意思,我想用python程序解之。做程序就要先想一想思路了,我的第一反應就是將25個數進行全排列,但當我算了算25!的時候,我就放棄了

(25!=15511210043330985984000000)。

退一步,解3?3的吧。

這樣,題就簡化為:將1-9無重復的填入3?3的方格紙中,使每一行、每一列和兩條對角線的和都相等。

首先得到1-9的排列就難住了我,于是就去CSDN查找有關python排列的文章,這才知道python中有一個叫itertools的庫,可以做排列。

只需這樣:

import itertools

a = [1, 2, 3, 4]

b = list(itertools.permutations(a))

print(b)

輸出:[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2), (2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1), (3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]

共有24組排列,每個排列都是一個元組。

為了便于描述,先把九個數命名如下:

x11 x12 x13

x21 x22 x23

x31 x32 x33

學過線性代數的小伙伴可以看作一個3?3的矩陣,接下來就是要填數字了。廢話已經不少了,直接上python代碼。

import itertools

a = [i for i in range(1, 10)]

b = list(itertools.permutations(a))

#print(b)

for tupl in b:? ?#填數字

x11 = tupl[0]

x12 = tupl[1]

x13 = tupl[2]

x21 = tupl[3]

x22 = tupl[4]

x23 = tupl[5]

x31 = tupl[6]

x32 = tupl[7]

x33 = tupl[8]

if (x11+x12+x13)\#python支持連等

== (x21+x22+x23)\

== (x31+x32+x33)\

== (x11+x22+x33)\

== (x13+x22+x31)\

== (x11+x21+x31)\

== (x12+x22+x32)\

== (x13+x23+x33):

print(tupl[0 : 3])

print(tupl[3 : 6])

print(tupl[6 : 9])

print(" ") #打印空行

這樣就用窮舉的方法完成了數獨的填寫,輸出如下:

(2, 7, 6)

(9, 5, 1)

(4, 3, 8)

(2, 9, 4)

(7, 5, 3)

(6, 1, 8)

(4, 3, 8)

(9, 5, 1)

(2, 7, 6)

(4, 9, 2)

(3, 5, 7)

(8, 1, 6)

(6, 1, 8)

(7, 5, 3)

(2, 9, 4)

(6, 7, 2)

(1, 5, 9)

(8, 3, 4)

(8, 1, 6)

(3, 5, 7)

(4, 9, 2)

(8, 3, 4)

(1, 5, 9)

(6, 7, 2)

共有八組解。

這就完成了數獨的填寫。

(注:python版本為3.7.1)

如有更好的解法,還請私信我。(我的郵箱1569228598@qq.com)

歡迎點贊、投幣、轉發,更新不及時,謹慎關注。

總結

以上是生活随笔為你收集整理的python解初中题_用python解一道数独小题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。