冒险解谜游戏中文网 ChinaAVG

标题: [讨论]千奇百怪的Still Life迷题解法 [打印本页]

作者: uranus1997    时间: 2005-5-26 18:07
标题: [讨论]千奇百怪的Still Life迷题解法
<P>在游侠转了一下,发现still life里迷题的解法实在五花百门,挑了个我觉得比较“恐怖”的迷题解法,贴在这里给大家看看,也欢迎大家讨论分享自己的still life迷题解法[em01]</P>; j' W: U: ~8 v+ I$ K2 `" y+ q
<P>***********************************************************</P>
$ {: S2 f- A# g! k# {8 I% p<P><FONT color=#ff0000><b>阁楼箱子的迷题</b></FONT></P>2 G/ |4 }0 b. a4 C! h' T* p" y( o9 b
<P><FONT color=#2222dd>出自游侠[swiftxie]的解法:</FONT></P>
0 H4 _5 d0 d3 |# X+ V8 @/ z! w, w<P>这个迷题其实本身是很不错的,只是,谁知道要什么状况才可以打开箱子呢?
, ]$ {7 B2 p4 A* k% Y如果给我明确的目标,那么过程的思考是很有乐趣的,
$ ?* S7 t( {( a9 D可是没有明确的目标,谁知道阿?我于是第二次看了攻略,就看了要方方红方方才可以开。. d6 p+ q2 r4 k# T8 V+ T% h8 y3 I
然后是自己去摸索着转成方方红方方了。
" X9 G) h) J8 E# \摸索的过程还是比较有趣的,可以运用各种方法。
- T, _! n, @6 `2 X7 R1 x! [也可以像我一样,模型化,编了个JAVA小程序解决。2 ~1 |# I6 `, U7 P9 W% h
当然我没有考虑最短路径,没有考虑重复的“环”情况。
5 x$ z$ J3 R+ s: }4 W- H那要编写的代码太多了,呵呵。反正只要求一个可接受的解就OK了么。/ Z# O7 X, T4 G. M2 l& k" s/ F
如果是自己解,难度也不会太大,可以观察转动每个轴的变化情况,
1 W3 ]) _. O, L3 R) ^, b  y( D3 t用倒推的方法,3,4步一考虑。就是先跳3步,然后考虑,如果要这样,那么前三步大概如何。
2 ^5 o1 N7 |' M0 O* P3 D5 S在尝试的过程中,会发现一些“环”,就是若干步骤重复执行,会让状况回到开始。
9 ^- v5 p9 P0 l' P! h4 A这些环可以通过记忆避免,当然若是编程序,也无所谓环了。7 B/ A$ w, i, {2 C( E; I" e$ k
(我当时的做法是50步一算,然后重新算一次50步,直到找到50步以内的路径,
  ?( `; }5 w) E& L" _这样,环最长,不会超过10步吧。)</P>
& M6 K6 J8 w2 x" k% ~* L% e) t5 M<P><FONT color=#3300ff>出自游侠[raycrisis]的解法:</FONT></P>
/ Z" O1 J" }/ U8 x<P>没必要用JAVA编程序啊。
  L- u6 p7 ?- a5 B; ?这是个矩阵求解的题目。
5 s) h4 V/ X; r1 M6 H8 D. u用个矩阵除法一下就出来了。  I( s! C# q& l& j$ f2 w. G& Y4 o) L5 H
5个开关,4个花色。
4 P6 j# J  t$ k2 h4 U: H4个花色风别代表4种状态。可设方块为1、梅花为2、红桃为3、黑桃为4。
8 b& t% M6 {/ ?- z( X每个开关使用后,右转可代表1,左转可代表-1、不转代表0。
9 ^$ \: S8 f2 a0 |可得5X1的初始状态矩阵A,每个开关使用后的状态可得到一个5X5的矩阵B,每个开关需要使用的次数是一个1X5的矩阵X。要求开锁的状态也是一个5X1的矩阵C。
7 U/ V$ N7 x( O! Z. I: L实际的方程就是A+X*B=C;1 J2 |* U6 c. N1 K8 N6 }% c
X=(C-A)/B;就可得到每个开关要使用的次数了。</P>
7 r" G7 C  b; u<P>$ g3 [" Z) _+ V. W0 h) l0 S
得到的矩阵,如果是[0 -1 -1 -1 1]0代表不要使用,-1就是用3次(因为周期是4嘛),1就是用一次了啊。4 @! S( r) e+ G, Y# o2 [( g
这个矩阵很容易就能解出来。</P>
, g  W% N, ?. x/ X8 {  T<P>可是本人比较懒,用了matlab。</P>& p8 [) y+ W" O) ]  h  D
<P>***********************************************************</P>1 o7 Q! t( F# z5 r' l& K9 O+ H
<P>真是恐怖啊,连JAVA和矩阵都出动了![em06]佩服之至!</P>/ V8 r( q* J( F# B8 a! L/ c9 h
<P>大家还有一些别的迷题的思路吗?欢迎畅所欲言[em10]" y) y8 H$ k: A: F) g
</P>
1 L! f  u# I, U<P>7 s; m" a2 e7 J  H! J
</P>
作者: silverblue    时间: 2005-5-26 19:11
JAVA我不会啊,矩阵我们也未学过,而且我数学とても下手だね……8 G5 p. U# Z+ I) B' R; u0 S. |$ y

7 d" T" l/ p4 y. \# y) V; W7 U我解这道题的时候,老是只能使红心的其中一边变成两个相同的花式,但是另一边就不能,尝试过和同房一个同学用画图表示,但越画越麻烦,而且他数学比我还要下手,所以我最后还是砰砰运气啦……
2 A0 u* C+ P, R$ ?$ d  h/ q  |5 J9 R, K* Z
不过我突然想起这道谜题有点像 Syberia 2 里面拆分火车车厢卡锁的那个机关,那个机关也是有五个活动轴,而且拉动一个就会影响另外几个,那个谜题我就是用画图列举情况的方法来解决的,但是那个谜题相比要简单一些,因为每个轴只有“升、降”两种情况,而still life这里每个轴有四种情况的……' z0 l' p! T( J( T9 E* G

) e8 D" p- D; a, CU姐你都没说你自己是用什么方法解出来的耶?
作者: abe_myth    时间: 2005-5-26 20:09
游侠那些人甚至有用编程解阁楼密码箱的[em24]
作者: silverblue    时间: 2005-5-27 02:40
我发现只有那些数学头脑很强的人的思维才会令阿U说“佩服之极”的
7 l, `; k5 t' s2 Z' K$ O) I( w6 j' Q5 g% m( {0 J% A& m- C! K: n3 A# M2 |
再去研究了这个阁楼宝箱谜题一翻,发觉真的不是画图可以解决问题的,除非画几十个图吧
5 C: L- Y$ E. N/ U总之遇到这类排列组合的谜题,我真的宁愿碰运气好过了,反正我只是见到5个轴的转动方向是以中轴为对称的,但是再想下去就要爆血管,所以放弃,阿U你快说你是找什么规律解出来的?倒推吗?
) V" p: O# T2 @/ r* w6 @: H0 ~. W) G; H# A9 ~
可惜俺高中时老师没教 矩阵 耶……8 x9 A2 q( ^7 |! l
没法了,习惯了应试教育,想学的又不考,不考的谁想学?[em01]
作者: abe_myth    时间: 2005-5-27 08:50
<P>矩阵是高等数学才学的,高中没有</P><P>不过应用简单的排列组合对应关系也可以很容易解开阁楼锁谜题</P>
作者: sjwings    时间: 2005-5-27 09:30
对擅长数学的人而言这种谜题就像做数学题,但用纯数学的方式解谜题我觉得就丢了游戏的乐趣了,还是喜欢用自己的方式……
作者: sliverblue    时间: 2005-5-27 11:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: rb003    时间: 2005-5-27 21:21
<P>厉害……</P><P>这种谜题我都是猜着蒙出来的,没想过找最优解,平均10分钟搞定……</P>
作者: silverblue    时间: 2005-5-27 22:54
<DIV class=quote><B>以下是引用<I>rb003</I>在2005-5-27 21:21:20的发言:</B>
8 z8 ]4 G/ u& y& `9 x
" u9 |/ K. x0 N$ m0 |7 h' W+ d+ _3 u
<P>这种谜题我都是猜着蒙出来的,没想过找最优解,平均10分钟搞定……</P></DIV>
( E7 r# X( L% F- c/ ^<P>啊..........这句话不要随便说啊.......
- }0 F) L5 L7 G4 `- C! S! l# |) o- f6 |
因为类似的话我对某人也说过啊,
/ c  x# m; }9 ?9 `( \) R# V5 d! c: q
结果就惹来大祸了.........[em01]</P>
& ?6 @/ b) w# N! _1 f
[此贴子已经被作者于2005-5-27 22:57:16编辑过]

作者: pscj    时间: 2005-5-28 01:24
<P 0cm 0cm 0pt\">既然讨论我就来说说我的解法,没有游侠那人那么高深,一般人容易理解,就是麻烦点。1 W7 m; O2 |) `* \2 s  G/ D
4个花色风别代表4种状态。设方块为0、梅花为1、红桃为2、黑桃为3
0 C- t; v7 v6 j; e/ f搞一个数组存放箱子初始状态:int[] a = new int[] {0,2,0,3,1};0 h9 D" g- j  D9 e
最后我们要得到这样的结果:a={0,0,2,0,0}( f( ^2 z- @" P$ i! [2 i* W
有5个开关代表5种情况,后面要排列组合用到。每个开关使用后,右转可代表1,左转可代表-1、不转代表0。以下是每转一次应该得到的新的结果。
9 |8 X7 ^9 r( o(a +1) % 4 代表是右转+1       (a +3) % 4 代表是左转-1<p></p></P><P 0cm 0cm 0pt 84pt\">; r+ M) I  P  z7 Q3 }
case 0:<p></p></P><P 0cm 0cm 0pt\">                                   a[1] = (a[1] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[2] = (a[2] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[3] = (a[3] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   break;<p></p></P><P 0cm 0cm 0pt\">                            case 1:<p></p></P><P 0cm 0cm 0pt\">                                   a[1] = (a[1] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[2] = (a[2] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[5] = (a[5] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   break;<p></p></P><P 0cm 0cm 0pt\">                            case 2:<p></p></P><P 0cm 0cm 0pt\">                                   a[4] = (a[4] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[2] = (a[2] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[3] = (a[3] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   break;<p></p></P><P 0cm 0cm 0pt\">                            case 3:<p></p></P><P 0cm 0cm 0pt\">                                   a[1] = (a[1] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[4] = (a[4] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[5] = (a[5] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   break;<p></p></P><P 0cm 0cm 0pt\">                            case 4:<p></p></P><P 0cm 0cm 0pt\">                                   a[4] = (a[4] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[5] = (a[5] +1) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   a[3] = (a[3] +3) % 4;<p></p></P><P 0cm 0cm 0pt\">                                   break;<p></p></P><P 0cm 0cm 0pt\">然后用多重循环对5种情况进行排列组合,最后判断看结果a={0,0,2,0,0} 成立否,不成立再增加循环次数,我试到10的时候得到结果的,就是10重循环。办法有点笨。矩阵没会用,数学不好,汗。。。<p></p></P>
作者: silverblue    时间: 2005-5-28 02:11
<P>pscj的方法我也看不懂啊........</P>
作者: XYZ    时间: 2005-6-3 15:58
看着象矩阵运算啊,我用matlab试试。。。
作者: kaese    时间: 2005-6-4 13:22
<P>直接用线性方程解啊。</P><P>第一个钮转a1下,第二第三第四依次为a2、a3、a4。</P><P>向左是-1,向右是1。</P><P>如此可以列出方程,</P><P>比如对于第一个钮,是要从方变到方,就是说不管怎么变,这个钮转动的次数总是4的倍数(向左四下或者向右四下)。因此如果要列出这个方程我们就要考虑影响第一个钮转动的几钟情况。</P><P>游戏删了不大记得谜题的具体内容了。</P><P>我就假设好了,</P><P>假设,</P><P>能够影响第一个钮转动的就是第一个钮,第二个钮,还有第四个钮,按第一个钮的时候1向左边转一下即-a1,按第二个钮的时候1向左边转一下又是-a2,按第四个钮的时候1向右边转一下即a4.</P><P>于是可以得到方程:</P><P>-a1-a2+a4=4n</P><P>依次类推把其它按钮的方程列出来,就可以解出来了:)</P>
作者: kaese    时间: 2005-6-4 13:24
<P>其实这四个方程列出来以后,用初中的方法加加减减就出来了,也用不到线性代数里的矩阵:)</P>
作者: silverblue    时间: 2005-6-4 16:30
<P>看来这位mm也是数学高手哦,佩服佩服</P>
作者: kaese    时间: 2005-6-4 19:25
<P>什么高手啊,</P><P>在玩到这个谜题的时候把表列出来,向左转就用-1表示,向右转就用1表示,</P><P>然后就很自然的想到线代了啊。</P><P>唉,偶的数学也就只能在这些很特别的情况下才能用到了,平常点的用常识解决,在特别点的就不会解决了[em11]</P>
作者: silverblue    时间: 2005-6-4 19:35
<P>线代我也没学过哦,所以也看不懂,我很讨厌数学啊,也很妒忌数学好的人啊 [em07]</P>
作者: oe    时间: 2005-6-9 12:25
<P>游戏是娱乐,学习累了来玩游戏,还要用学的数学[em06]</P><P>那不是被游戏玩了么?</P>
作者: 叉包饭斯    时间: 2005-6-12 14:52
楼上莫名其妙。
8 B% R* c, C( c( T! Q& _2 ]
" a5 m5 C  h( E) W. ]* D数学是最有趣的游戏。
2 d# n* d( U5 K: ?% C. |
7 S  o# @& x2 @6 \  W4 g(虽然是我玩得最差的游戏)
作者: 燕鱼    时间: 2005-6-13 00:21
兄弟们,搞复杂了吧!
作者: windman    时间: 2005-6-15 22:47
这就是一个数学游戏。慢慢玩,不用这么复杂地算的。找到规律就行了。
作者: imcyn    时间: 2005-7-15 14:18
太强了,我是自己试出来的。
作者: eio    时间: 2005-8-13 19:20
这个矩阵解法太帅了 清晰高效啊
作者: lqshma    时间: 2005-8-26 03:59
我认为这个密题一定要发现他的规律,而这个规律也只能借助数学的方法 虽然按照规律试N次也可以试出来。4 U' ^3 g6 p7 m8 Y( l
: j+ K" R; [2 d2 b" A, U' Z$ j

" R- i( t  k% W3 g: n
  q# ]  v# z& ?) `8 n我们发现第一个开关控制的是1,2,3个字符的转动,而且分别是1,3右转 2左转
8 d% T1 E, a5 h8 ?第二个开关控制的1,2右转  5左转
6 v9 H- _3 [3 ^: H, e4 ?5 o第三个。。。第四 第五都可以发现他们控制的哪个字符转动以及方向1 U0 I3 v# [8 f
我们来列个表 1,2,3,4,5代表从做往右的5个开关 往右转用1 往左转用-1  填入下表
* U# H6 a  {7 O6 ]1 `% q. o6 J1 }. ?" C4 o

0 R8 ?) S9 a) y% h5 [# o, i& m+ j5 _: B; t0 f/ K, M' C  O7 a2 i
     1         2         3          4         56 z+ W1 S# N" T( o+ d) z
---|-----------------------------------------
4 C% P: @( @- E) _" A' a, \2 u+ T1  |  1        -1         1                               a& p  u8 Z5 L7 G) G. M0 B
---|-----------------------------------------4 V3 u& G- a  J# ]( Z5 F
2  |  1         1                               -1        b
8 A( [7 w) G% p---|-----------------------------------------0 d& x0 f) Q, M( r* O6 ?
3  |            -1         1         -1                   c/ m7 l/ [! k- W) k  I
---|------------------------------------------  I1 B; i. H$ t2 o  ?& }+ [4 h
4  | -1                                1         1        d
9 a3 E$ M! x* [6 S  }$ b---|------------------------------------------7 N: b  H: `9 F
5  |                       -1          1         1        e
& T- {8 d( x1 z* X----------------------------------------------' x  {2 b# X# B7 i' ~. F+ Q1 W/ {
        0         2        2           1         3( f+ h& O: R; _1 n, ]. S

: }3 v" d5 Z) }& Y2 h. Q) ]5 B# t* C8 \4 j' t
看到项链上的字符我们知道最后要摆成那几个字符 我们按照最初的情况知道总共需要让第1,2,3,4,5按钮分别右转0 ,2,2,1,3下,由于每个开关都互相影响,不能直接按开关1 0下,开关2 2下。。。。但是他们的影响有规律,就是上面的表,而且是线形的,所以可以通过解方程3 h8 p" p) _; [/ ~' _
设第一个开关按a下,第二个开关按b下,。。。c,d,e ,
" `$ F$ _  W$ W! K
$ U7 M( Y+ m. w$ ~5 f& [5 D下面要做的就是列方程了 从上往下竖着看
/ H  v5 f2 }2 s$ I; oa+b-d=0
' I* y4 d$ ^0 C3 _) L! p-a+b-c=2
  S: [# b0 a+ u; C' I, ]a+c-e=26 t" D5 A. i- P$ c. n  d
-c+d+e=11 H( q+ Z8 u4 H0 y3 W0 L' L. G3 Y& x" u
-b+d+e=3% w9 P2 H& C% d: A$ ?& X8 U

$ Y+ q3 X/ D# p; F这个方程应该很好解,要是不会解或者懒得解的话你就给你上小学的弟弟妹妹做做练习/ u% T( g* d/ b! ~! b# |& L$ x5 x
得出来的a,b,c,d,e就是开关1-5所按的次数( _6 f) q; X2 q

4 C" v( E9 h% \' y
4 Y/ p' H5 U) F不知道我讲明白没有! w& s/ b; G0 W" s+ H- C3 B
, ]; e/ Z7 z* L0 F! j

! {. e5 q. o0 Z3 ]! `. y9 F如果学过线性代数的话就知道 其实解线性方程和做矩阵运算是一回事,但这么一个小CASE就要搬出矩阵这个工具来解决未免太夸张了吧,而且还要做复杂的矩阵变换,太麻烦了,虽然可以用Matlab算,但游戏玩家大多不会用的吧
2 B3 q  \; s+ g! D' K: {% t6 \1 [- a3 w- U$ {- h/ H; K
还有人居然想到编程,太BT了吧
作者: uranus1997    时间: 2005-8-27 14:20
哇哇,给lqshma鼓掌,我喜欢你的解法,够简单而有逻辑,思路也很清晰!
作者: lqshma    时间: 2005-8-27 17:46
过奖 过奖
" o0 `& W; u. \$ x
3 Z% n% ]7 _% M& ^; l
' r6 M) V7 w! g! C6 W
: R" {  Z7 M9 b9 R+ l# J& b5 m
. ^' w3 Y4 [/ `8 r9 k4 M( \$ j6 s% v  d6 p$ ?( ?3 `  _( w' }/ p
怎么我列的表格变形了?奇怪!




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2