天殇 太极迷阵 的评价

天殇
2016/12/26
玩过
评价历史
设备
HUAWEI P8
以前从来没有写过评论,因为懒。。。
第一眼看到这个画面就眼前一亮,自从背完易经后就想做个和易有关的游戏,主要是想推广群经之首。好吧,扯远了。。。
前面25关,比较轻松。正在无聊的时候,到了26关提示可以跳关,果断跳到51。然后发现确实难了点,花了10分钟玩到54,觉得应该有规律,但没去找,因为懒。。。
然后想着一劳永逸地解决这个问题,在这之前去瞅了眼99,顿时为自己的选择无比庆幸,我可不想好不容易在工作中存活下来,却猝死在一款游戏中。呃,又扯远了。。。
今天下午无聊的时候写了段代码,然后看了下过关提示,然后,就没有然后了。。。
代码如下,有兴趣(闲的蛋疼)的童鞋可以试试。
其中,n表示这关总共几个球,shape是指那几根线指着的球所表示的值,黑为1,白为0,按顺时针方向排列,一个球一个bit,起点你可以自己定。target就是每关刚开始的时候所展示的图案值,计算方法同上,此处也要选定一个起点,简便起见,两个起点最好重合。最后,将返回值按二进制写在纸上,若该位为1,则将之前选作起点的那根线对着该位所在的球,按一下八卦,若为0,则啥也不做,然后从低位到高位依次操作即可。
最后,对作者说声抱歉,实在是本人智商捉急,但又比较好奇通关之后会出现啥,就取了个巧,罪过罪过。。
#include "stdafx.h"#include <iostream>#include <vector>bool resolve(int n, int shape, int target, std::vector<int>& results){ if (n <= 0 || n >= 32) return false; results.clear(); int* shapes = new int[n]; for (int i = 0, base = (1 << n) - 1;i < n;++i) { shapes[i] = ((shape << i) | (shape >> (n - i))) & base; } for (int i = 1, sum = 1 << n, result;i <= sum;++i) { result = target; for (int j = 1, k = 0;j != 0;j <<= 1, ++k) { if ((i & j) != 0) { result ^= shapes[k]; } } if (result == 0 || result == sum - 1) { results.push_back(i); } } return results.size() > 0;}int _tmain(int argc, _TCHAR* argv[]){ std::vector<int> solution; if (resolve(24, 0x15ab5d, 0xe85f5b, solution)) { std::cout<<"当前太极puzzle有以下解:"<<std::endl; std::cout<<std::hex<<solution[0]; for (int i = 1, size = solution.size();i < size;++i) { std::cout<<std::hex<<", "<<solution[i]; } std::cout<<std::endl; } else { std::cout<<"当前太极puzzle无解:"<<std::endl; } system("pause"); return 0;}
62
转发
回复
13
62
最早
TapTap
友善回复,会获得更多的赞~
官方回复
睡神飞工作室
睡神飞工作室
睡神飞工作室拾薪者
睡神飞工作室 官方
会代码也是种本事,虽然我看不懂
2017/2/22
米谷堆
要不要这样,还讨论代码
2017/1/9
Scarcity mental
这波代码就比较优秀了
2018/5/26
凡人☞郡主
我表示放弃这款游戏
2018/6/3
凡人☞郡主
看了你们的评论
2018/6/3
栾辋(已搬迁)
我的天。。。十分钟?没开玩笑吧?。。。这串代码佩服佩服,完全看不懂(#-.-)
2018/7/19
尹〜Boss
这,很可以
2018/8/15
冥月
呵呵哒
2018/9/4
自知者明
什么原理?循环遍历暴力破解法?运算量可是指数级上升
2018/10/5
HH
所以你通关了么
2018/11/18
已经到底了
13
62