[心得] 數斜的解法

看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者 (心比人老)時間18年前 (2007/12/18 02:21), 編輯推噓8(807)
留言15則, 3人參與, 最新討論串1/1
自從看了 brianjim大 介紹的 janko.at(2755篇), 也開始玩起 數斜, 不過我用的是 nakururu大 介紹的 Simon Tatham 的 slant 程式(2361篇), 因為 janko.at 的 java 程式反應實在有點慢... Simon Tatham 的程式我玩得較多的還有 數迴(loopy) 和 數橋(bridges), 它的題目好像真的是用程式出的, 而且難度也不錯, 蠻厲害的! 這星期天心血來潮, 決定挑戰 janko.at 數斜 最高難度的最右一題(no39), 仔細看了題目名稱 "Gokigen Naname" ...., 昏倒!! 這是日文, 不是德文吧?! 正好是日文題名 "ごきげんななめ" 的羅馬拼音, 再查 jp yahoo 的辭典, 還真是有 "不爽" 的意思... ^_^! 從中飯前解到晚飯後, 扣掉吃飯和陪小姪女玩其他 game 的時間, 大概花了 4 個小時才解出來吧?! 其中失敗重頭來過一次... 整理了一些概念和各位同好分享一下: 一. 樣式 (pattern) 數斜 規則上每一格都要有線段, 所以有數字的點可以決定周圍格子的線段, 角 點 決定 1 格. 邊 點 決定 2 格. 中間點 決定 4 格. 基本上用 "不足(線段數)", "超過(線段數)", "造成單位迴圈" 三個概念, 用簡單的歸謬法就可以整理出一些 樣式. 比如說: 横直相鄰的 1-1, 3-3 (都是中間點) 横直相鄰的 (邊點)1-3(中間點) 以上是原始狀態下的 樣式 (原始樣式), 這些都可以決定部分的線段, 而且無論周圍狀況如何都不影響結果. 決定了一些線段後, 就會出現一些 延伸樣式. 比如說:    ︱ ︱/   /︱ ︱/   —1—3— → —1—3—    ︱ ︱\   \︱ ︱\   /︱ ︱    /︱ ︱/   —2—2— → —2—2—    ︱ ︱/   /︱ ︱/   /︱ ︱    /︱ ︱/   —┼—3— → —┼—3—   \︱ ︱    \︱ ︱\ 其他就不列舉了. 總之 樣式 和周圍無關, 可獨立推導出該區域的部分(或全部)的結果. 二. 2 的遞延性 和 數迴 斜線相鄰的 2 類似, 數斜 横直相鄰的 2 也有遞延性. (可參考 turing大 "[心得] 關於數迴的「碰觸」"(2775篇)一文.) 這個遞延性的效果, 看起來像複製, 也有點像推骨牌, 姑且稱為"骨牌效果". 在上項 一. 各種樣式的兩數字中間插入 1 個以上連續的 2, 結果還會相同. 三. 迴圈與邊 數斜 的線可視為兩大組, 概念類似西洋棋中的白格主教和黑格主教. 相鄰邊點延伸的線條不會連在一起, 同一組的線才可能形成迴圈. 只要每一條線都能連到邊點, 就保證不會有任何迴圈. 有些狀況會類似 數橋. 比如說 斜線相鄰的 1-1 (都是中間點), 它們不能連在一起, 否則會形成迴圈(2單位). 這是最簡單的例子.(其實也可以視為一個 樣式.) 所以迴圈的檢查, 除了看迴圈本身以外, 還可以看線條有沒有連到邊上. janko 站上看到最大的題目是 36 x 24, nikoli.com 的 Puzzle Championship 雖沒有 數斜, 但大題目多是 45 x 31, 我想應該是有考慮顯示器的一般解析度. 要解大題目或許可以用 slant 程式的 Custom 功能 (Type -> Custom...) 設為 45 x 31 試試, 程式會配合解析度自動調整字型大小. 而且 slant 程式會即時檢查 線段數 和 迴圈, 反應又快, 我覺得順的時候還有些暢快感. 第一次在本板 po 文, 請多指教, 謝謝! Chung -- 沒有成見是種成見? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.58.11

12/18 02:34, , 1F
這樣應該差不多把它的解題技巧都說完了 @@
12/18 02:34, 1F

12/18 02:34, , 2F
不過它很麻煩的地方就是不容易看出哪裡有迴圈
12/18 02:34, 2F

12/18 02:35, , 3F
玩起來的痛苦程度就比數迴高一點
12/18 02:35, 3F

12/18 02:36, , 4F
差不多吧...希望以後還有新發現. ^_^!
12/18 02:36, 4F

12/18 02:45, , 5F
迴圈的確比較難, 大概是分歧的關係, 數迴沒有分歧.
12/18 02:45, 5F

12/18 04:58, , 6F
大叔,2755篇時,不是就聊到名稱是日文了嗎?XD
12/18 04:58, 6F

12/18 05:00, , 7F
上次的11與33樣式也可考慮加進去,有時挺常見的XD
12/18 05:00, 7F

12/18 05:04, , 8F
骨牌的比喻很不賴耶~不過我喜歡說成骨牌效「應」...
12/18 05:04, 8F

12/18 05:05, , 9F
它也是一種「連鎖反應」.....
12/18 05:05, 9F

12/18 10:26, , 10F
一直沒有意會過來, 以為是德文好幾天... @_@
12/18 10:26, 10F

12/18 10:31, , 11F
有列11和33, 只是沒圖示(原始樣式)... ^_^!
12/18 10:31, 11F

12/18 11:12, , 12F
哈,真的有耶!
12/18 11:12, 12F

12/18 12:24, , 13F
所以我覺得數斜實在很像數迴,但是玩起來沒那麼爽快 @@a
12/18 12:24, 13F

12/18 14:58, , 14F
數迴的線有「有」與「沒有」兩種變化,數斜的斜也有兩種
12/18 14:58, 14F

12/18 14:59, , 15F
所以在「畫面」的呈現上,數斜會比較多一點.....
12/18 14:59, 15F
文章代碼(AID): #17PhuJL8 (puzzle)
文章代碼(AID): #17PhuJL8 (puzzle)