Re: [問題] 騎士踩地雷(knightsweeper)002
看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者etrexetrex (moonet)時間16年前 (2010/02/02 11:03)推噓0(0推 0噓 3→)留言3則, 2人參與討論串3/4 (看更多)
※ 引述《puzzlez (帕索)》之銘言:
: 星期一的沉悶,用一道謎題來打破吧! ‧ ‧
: ‧ ‧
: 請將20個騎士,放入沒有數字的空格裡。 騎
: 盤中的數字,代表有幾個騎士正在攻擊那個格子。 ‧ ‧
: ‧ ‧
: 你能夠像踩地雷那樣,把全部的騎士都找出來嗎? ▲圓點為騎士攻擊之格
: ‧‧‧1‧‧1‧‧‧
: ‧111‧‧1‧‧1
: 1‧‧‧‧‧23‧‧
: ‧1‧2‧1‧2‧‧
: ‧‧‧12‧1‧‧‧
: ‧2‧‧‧‧‧5‧1
: ‧‧112‧‧‧‧‧ 這次一個「0」也沒有哦~咯咯咯……
: ‧‧1‧‧‧‧1‧‧
: ‧‧‧2‧‧1‧‧‧
: ‧‧‧‧‧12‧‧‧
有些格子是無效的格子 不管放不放騎士都不影響
因為他們沒有攻擊到任何一個數字
‧‧騎1‧‧1‧‧騎
‧111‧‧1‧‧1
1‧‧‧‧‧23‧‧
‧1‧2‧1‧2‧‧
騎‧‧12‧1‧‧‧
‧2‧‧‧‧‧5‧1
‧騎112‧騎‧騎‧
‧‧1騎‧‧‧1‧騎
‧‧‧2‧‧1‧‧‧
騎‧騎‧‧12騎‧騎
所以說當我們使用少於20個騎士去滿足所有數字的時候
可以用這些X的位置來補滿20個
找出這些格子是因為這樣才能避免解矩陣的時候遇到無窮多解的問題
定義變數 M(i,j)
M j
0123456789
0 ‧‧騎1‧‧1‧‧騎
1 ‧111‧‧1‧‧1
2 1‧‧‧‧‧23‧‧
3 ‧1‧2‧1‧2‧‧
i 4 騎‧‧12‧1‧‧‧
5 ‧2‧‧‧‧‧5‧1
6 ‧騎112‧騎‧騎‧
7 ‧‧1騎‧‧‧1‧騎
8 ‧‧‧2‧‧1‧‧‧
9 騎‧騎‧‧12騎‧騎
M(i,j) = 0 or 1 ,if M(i,j) 原本是 ‧
M(i,j) = M(i,j) ,if M(i,j) 原本是 1 2 3 5
M(i,j) 不存在 ,if M(i,j) 原本是 騎
定義限制式 每個數字會產生一條限制式,舉例來說
M(0,3)的限制式:
M(2,2) + M(2,4) + M(1,5) = 1
M(5,7)的限制式:
M(3,6) + M(3,8) + M(4,5) + M(4,9) + M(6,5) + M(6,9) + M(7,6) + M(7,8) = 5
用這29個限制式可以排出一個 29 * 59 的矩陣A 跟 29 * 1 的矩陣B
解AX=B
如果X的每一項剛好等於 0 or 1 就是答案
如果不能剛好等於 0 or 1,就要加上限制式
M(i,j) >= 0
M(i,j) <= 1
變成在解線性規劃問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.9.202
※ 編輯: etrexetrex 來自: 140.118.9.202 (02/02 11:04)
※ 編輯: etrexetrex 來自: 140.118.9.202 (02/02 11:04)
→
02/02 11:15, , 1F
02/02 11:15, 1F
※ 編輯: etrexetrex 來自: 140.118.9.202 (02/02 11:22)
→
02/02 11:24, , 2F
02/02 11:24, 2F
→
02/02 18:44, , 3F
02/02 18:44, 3F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 4 篇):
puzzle 近期熱門文章
5
21
PTT遊戲區 即時熱門文章