#14940: 或許正確,但解題系統不支援的Python解法


reina42689 (職業岩龍騎手)

學校 : 國立澎湖科技大學
編號 : 77774
來源 : [1.175.55.76]
最後登入時間 :
2022-04-05 18:21:28
a016. 數獨(SUDOKU) | From: [114.45.49.228] | 發表日期 : 2018-08-17 19:03

寫了一個下午終於在電腦上的編譯器通過了,但丟到解題系統卻發現好像不支援numpy,晚點再來想普通寫法

我是python的新手,對於陣列與for的運用不怎麼靈活,如果該寫法有誤還請各位糾正,謝謝

 

說明一下程式思路:

1. 利用二維陣列儲存資料

2. 三個判斷

-> 9條直行、9條橫列

做一個List儲存1~9,移除在每單行、列數字中找到的相同數字,List空了代表著該行、列包含了1~9,如果達成9行、列皆通過檢測,計數器會達到9並傳回確認訊號

-> 3x3區域

將大陣列分割成3x3(術語上好像是叫「切片」),一樣運用迴圈讓3x3匹配只有1~9的List,計數器達到9並傳回確認訊號

 

程式碼連結:

https://pastebin.com/nikd60aJ

 

 
#14961: Re:或許正確,但解題系統不支援的Python解法


reina42689 (職業岩龍騎手)

學校 : 國立澎湖科技大學
編號 : 77774
來源 : [1.175.55.76]
最後登入時間 :
2022-04-05 18:21:28
a016. 數獨(SUDOKU) | From: [114.25.42.61] | 發表日期 : 2018-08-22 16:33

與上次程式思路相同:

1. 利用二維陣列儲存資料

2. 三個判斷

-> 9條直行、9條橫列

做一個List儲存1~9,移除在每單行、列數字中找到的相同數字,List空了代表著該行、列包含了1~9,如果達成9行、列皆通過檢測,計數器會達到9並傳回確認訊號

-> 3x3區域

將大陣列分割成3x3(術語上好像是叫「切片」),一樣運用迴圈讓3x3匹配只有1~9的List,計數器達到9並傳回確認訊號

陣列替換搞定了,但一直卡在輸出問題,經過數十個版本的mind wipe和自暴自棄(?)了四天之後終於解決了。

這次主程式使用的是無窮迴圈While True進行,並更改了二維陣列的宣告與切片方式

經測試後可AC,如果有更好的程式寫法一樣歡迎糾正與指教,謝謝各位

 

程式碼連結:https://pastebin.com/EZSLcq8c

 
ZeroJudge Forum