學習Python大概一個半月了,老師出Leetcode上的Valid Sudoku當作業給我們練習,也就是寫出一隻程式,檢查9X9的數獨直排、橫排、小宮格是否合理。我覺得是一個很棒的綜合練習:https://leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/769/
會特別想分享心得是因為,數獨是幾乎人人都知道的小遊戲,在以前沒有智慧型手機的時候,數獨也是打發時間的好幫手,但是那時候很疑惑,到底是誰在發明數獨的題目,他每天都要一行一行+一格一格檢查,太辛苦了吧!沒想到檢查數獨正確性對電腦來說,就是幾行程式碼、不到幾秒鐘的事情,真想搭時光機回去跟小時候的自己說:你的擔心是多餘啦🤣
突然想到還沒學Python的時候,我有一陣子在追Netflix的魔鬼的計謀2(The Devil’s Plan: Death Room),裡面的「騎士巡遊」也超級燒腦,那時候我下載相關的手機APP,感覺用起來都不順手,我就叫ChatGPT幫我設計,放去Codepen裡面,能玩!還玩了好幾題XD大概長這樣,就很單純:

回到9X9數獨,我先梳理邏輯:
第一步--檢查直排
第二步--檢查橫排
第三步--檢查小格(Box)
第一步跟第二步,只要先把邏輯順過就寫得出來;
但是第三步,我卡了很久,都一直只能寫得出最左上角的那一格,鬼打牆!

向老師請教,才知道原來可以用餘數跟商數的方式去解!(//、%)
把格子想成座標,例如:(0, 0)、(3, 6)也就是每一個小box的左上角那一格,都是一個座標的話,就會發現是0、3、6這三個數字在跳(好神奇啊!)
老師說,若第一次寫這題,只寫得出橫排、直排然後寫不出小box是正常的,原來如此;
雖然這題寫得有點久,還拿紙筆出來塗塗寫寫,不過瞭解了如何解題後,就覺得豁然開朗。讓我學習到,其實大部份的事情都是有邏輯可循的,(也有可能是我數學沒學好🥲)如果可以回到學生時期,我一定好好學數學,現在覺得數學蠻好玩的(咦)
其實也不要想什麼時光倒流的事情,現在有遇到能學習數學的機會,就努力去理解吧!