A9VG电玩部落论坛

标题: ヤシャス山 -AF110年-时计盘指针走法的极限研究 [打印本页]

作者: m4a1ken    时间: 2011-12-20 13:16
标题: ヤシャス山 -AF110年-时计盘指针走法的极限研究

如图,日站上的攻略不算最极限吧,最极限的方法应该是,不用人脑,用电脑~
昨晚走到最后,发现还是有点难度,靠运气都过去了,但是回想一下,万一后面还有更难的题目,或者DLC弄个超级复杂的,该怎么办呢?于是想到这个时计盘指针和三级计算机等级考试里的经典题目-报数出圈很相似,无聊的写了个C程序代码,生成了exe文件,用来秒求走法~
方法如图,当然得先知道水晶盘的个数和每个上面的数字,然后按图中的红色字体类似,自己写个顺序就行,从哪开始,顺时针逆时针都无所谓,之后双击上传的ff13_2.exe文件,在dos窗口首先输入水晶盘的个数(会有提示,如上图例子中的11个);然后分别输入每个水晶盘的数字(要按照自己标定的1~11的顺序来,中间用空格分开即可),即可瞬间求出一种走法。图中的例子一共6种走法,程序只会给出一种,当然已经够了。
其实还是自己解谜要好玩,格子很多实在过不去了可以用这招。其实SE给我们的题目有很多种解决办法,所以多尝试下能过的去,要是弄个格子很多但只有几种方法的,比如我例子中的那个,那真是坑爹。
最后附上C++代码吧,继续攻略了。

#include "stdio.h"
#include "stdlib.h"

int main()
{
        int a_len,i,j,k,up,start,nn,mm,position,out;
        int array[50];
        int seq[50];
        int clock[50];
        int answer[50];
        printf("Please input numbers of crystals:\n");
    scanf("%d",&a_len);
        printf("Please input each number(separated by space):\n");
    for(i=1;i<=a_len;i++)
        {
                scanf("%d",&array);
        }

        nn=1;
        out=0;
        for(i=1;i<=a_len-1;i++)
        {
                seq=-1;
                nn=nn*2;
        }
   
        for(start=1;start<=a_len;start++)
        {
                if(out==1)
                        break;

                for(j=1;j<=nn;j++)
                {
                        for(mm=1;mm<=a_len;mm++)
                        {
                                answer[mm]=0;
                                clock[mm]=1;
                        }
                        position=start;
                        answer[1]=position;
                        clock[position]=0;
                        for(k=1;k<=a_len-1;k++)
                        {
                                position=position+seq[k]*array[position];
                                if(position<=0)
                                        position=position+a_len;
                                else if(position>a_len)
                                        position=position-a_len;
                                if(clock[position]==0)
                                        break;
                                else
                                {
                                        clock[position]=0;
                                        answer[k+1]=position;
                                        if(k==a_len-1)
                                        {
                                                out=1;
                                                break;
                                        }
                                }       
                        }
                        if(out==1)
                        {
                                printf("Sequence:\n");
                                for(i=1;i<=a_len;i++)
                            printf("%d ",answer);
                        printf("\n");
                                break;
                        }

                        up=0;
                        for(i=a_len-1;i>=1;i--)
                        {
                                if(i==a_len-1)
                                {
                                        seq=seq+2;
                                        if(seq==3)
                                        {
                                                seq=-1;
                                                up=2;
                                        }
                                }
                                else
                                {
                                        seq=seq+up;
                                        if(seq==3)
                                        {
                                                seq=-1;
                                                up=2;
                                        }
                                        else
                                                up=0;
                                }
                        }
                }
               
        }
        if(out==0)
                        printf("**ing SE, there is no answers! Or you may give the wrong numbers!\n");
        system("pause");
}

[attach]253507[/attach]
作者: jojo66    时间: 2011-12-20 13:59
其實了解這個小遊戲的玩法邏輯....就會很容易

通常困惑的應該是 最後12各那一關...作一下筆記就會過了!!

作者: hitomi7891    时间: 2011-12-20 14:26
jojo66 发表于 2011-12-20 13:59
其實了解這個小遊戲的玩法邏輯....就會很容易

通常困惑的應該是 最後12各那一關...作一下筆記就會過了!! ...

有攻略嗎?我也卡在這裡了
作者: m4a1ken    时间: 2011-12-20 14:30
hitomi7891 发表于 2011-12-20 14:26
有攻略嗎?我也卡在這裡了

如版主所说,这个小游戏仔细想想也不难,前提是建立在SE给我们随机生成的格子有多种解法,日站上也有一些tips。如果实在过不了,就用我上传的ff13_2.exe吧,一下子就过去了。
作者: liuyong_401    时间: 2011-12-20 14:40
我是来膜拜LZ的
这个小游戏 我玩了两关就歇菜了 懒得进行下去了
作者: assistant    时间: 2011-12-20 15:49
之前看jp的玩家live,那人硬是玩了至少1个小时还没走出去,旁边有人叫他做笔记他说这种东西做笔记太麻烦了,不想做,但是最后还是用了excel表格做了个,然后走了2次就过了。。歇菜,早点做不就好了
作者: fatyme    时间: 2011-12-20 17:22

这才是IT民工  
很棒
作者: m4a1ken    时间: 2011-12-20 17:29
本帖最后由 m4a1ken 于 2011-12-20 17:32 编辑

支持一下斑竹,其实我那么做只是给一些卡关的提供帮助,再就是:
1,SE给出的最大12格关卡,有很多种走法,我指的很多种,不是几种那么少,否则我靠头脑不会很容易就走过了,就好比大家都去抽奖,很多人都中奖,那只能说明中奖率很高。计算是穷举所有走法,找到一种走法就break跳出,所以12格理论上最大有12*(2^11)=24576种走法,当然有的走法走几步就行不通了。想想这么多种走法,如果只有一种是通的,那么走几次走通岂不是像中***一样了。当然我要说明,利用日站的一些tips,也可以排除一些走法。
2,如果最大不是12格,而是更多,比如20格,很明显人脑就不够用了。当然人工智能还不能代替人脑。机器只能按照我们给出的指令执行,人脑才具有主观能动性。
用程序做和人脑做就好比下深蓝和人下棋,电脑可以考虑近乎无穷多种走法去选择最佳的方法,而人脑凭经验也不一定输给电脑。
有点扯偏了,玩游戏嘛,快乐就行。
作者: jerryhsu    时间: 2011-12-20 17:29
收藏一下 等入手后慢慢研究!!!!
作者: link8848    时间: 2011-12-21 14:15
楼主太强大了,轻松过掉AF110年的4个时计盘,第四轮居然11个,看着就吐血了
作者: 烧饼啊    时间: 2011-12-21 20:14
碉堡了
作者: kayousubu    时间: 2011-12-27 22:45
LZ你实在太帅了12个数字的那关终于揭开了- -
作者: メルセドア    时间: 2012-1-2 15:38
我只想问下 是我不会使还是咋了


我使楼主的这个工具 一个也解不开啊
作者: agentz    时间: 2012-1-2 20:16
托LZ的福我也过去了

好厉害   仰望一下

作者: goenter    时间: 2012-1-3 07:32
本帖最后由 goenter 于 2012-1-3 07:51 编辑

第1和第2关和第3关乱过了。第4关就乱过不了
作者: 山里的孩子    时间: 2012-2-4 22:55
顶························
作者: anyexing    时间: 2012-2-8 08:44
楼主强大
赞一个~~~~~~~~~~~~~~~
作者: tt20    时间: 2012-2-10 12:24
過了......完全不知道在干什麼.........................................................
作者: flyingzhu    时间: 2012-2-10 13:28
LZ强人啊,佩服佩服
作者: ucg21263    时间: 2012-2-10 13:34
跟着感觉走就过了....
作者: 锵☆シン    时间: 2012-2-11 16:25
神.工具无误!感谢楼主!
作者: gggeeeooo    时间: 2012-2-12 14:34
楼主神人,确实好用'''''''''''''''
作者: mgudis    时间: 2012-2-12 17:24
发现此贴,lz居然写程序出来,膜拜一下。
作者: xxsryxx    时间: 2012-2-13 17:35
奇怪了 为什么我按照 上面写的数字 12 然后再输入数字...给出的走盘顺序不对的!?  求高人指点啊!!
作者: feyboo    时间: 2012-2-13 23:35
感谢LZ感谢C++,感谢源代码

作者: jager01    时间: 2012-2-14 00:08
凭感觉全一次过
作者: weifa    时间: 2012-2-14 00:23
谢谢楼主。。。。。。。。。
作者: jimmywon    时间: 2012-2-14 10:11
收了,留着约而巴AF400 用。谢谢了
作者: anyexing    时间: 2012-2-18 09:51
楼主
求教
加空格输入数字后怎么弄
作者: 舞只为你    时间: 2012-2-25 10:39
膜拜下,那公式那么得长,俺是什么都没看懂~~!
作者: feixian    时间: 2012-2-26 15:45
顶楼主一个,字数字数啊。
作者: 百亚    时间: 2012-2-29 18:26
楼主的计算工具实在是帮了大忙了~~~下午乱走的,头都大了,少的还能算算,数位一多就烦躁了。。。
作者: 云生结海    时间: 2012-3-1 19:43
LZ的程序救了某菜一命……
理科***,曾经走时钟谜题走疯掉N次
膜拜LZ~~~
作者: flyfeetboy    时间: 2012-3-3 09:42
真的很强大,一下就算出来了,但是还是尽量自己算出来,实在算不出再来求PC求解

作者: 慕容梦雪    时间: 2012-3-11 12:06
12个真的走不出来了 SE***
作者: xiaoming4494    时间: 2012-4-28 11:24
呵呵,学以致用啊,C语言永恒经典宝刀不老~
作者: la_fayette    时间: 2012-5-2 16:54
有个日站有的,还是在线,并且分pc和移动终端两个版本。。。我就是靠那个走出来滴
作者: charie    时间: 2012-5-2 17:55
LZ真厉害啊
作者: reikoboy    时间: 2012-5-6 20:58
超强,虽说偶也也一次过关的,但还是收一下,强!
作者: babyvoxwn    时间: 2012-5-8 13:05
苦逼接近1小时走过的!开始瞎走,后来找规律拿脑子算过去的!
作者: ghjsunny    时间: 2012-5-11 14:54
lz很强大,要是早点看到这个帖子就好了,上回硬是耗了一个多小时才走完,结果走完了都不知道是什么意思。。。
作者: 让我来治愈    时间: 2012-7-2 15:37
脑残者的福音呐。。。。。
作者: youxpg    时间: 2012-7-23 18:09
楼主太厉害了,佩服!
作者: ghjsunny    时间: 2012-12-27 14:04
帅哥你好啊,你能不能把你这个帖子里的https://bbs.luryl.com/thread-2097261-1-1.html那个小软件再发一下好吗?原帖里那个下载失效了。谢谢
作者: cloudfancy    时间: 2013-8-12 13:54
哈哈哈 还真有人写程序啊。我前几天也自己写了个,代码比你的好看 嘻嘻。
作者: yichang    时间: 2013-8-13 09:12
很厉害。。。很有帮助 谢谢!!!




欢迎光临 A9VG电玩部落论坛 (https://bbs.luryl.com/) Powered by Discuz! X3.4