»
首页
|
手机数码
|
汽车资讯
|
游戏硬件
|
评测专题
|
手机壁纸
|
海淘值得买
|
度假
|
求职招聘
|
广告联系
» 您尚未登录:请
登录
|
注册
|
标签
|
帮助
|
小黑屋
|
TGFC Lifestyle
»
游戏业界综合讨论区
» 玩了阿玛拉和FF13-2,这日式RPG真不能再这样下去了。
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
公司招聘信息
打印
[业评]
玩了阿玛拉和FF13-2,这日式RPG真不能再这样下去了。
Jonsoncao
元始天尊
初级用户
帖子
42178
精华
18
积分
100098
激骚
2267 度
爱车
10100111001
主机
11101001
相机
11110
手机
101
注册时间
2001-7-6
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2012-2-8 05:29
显示全部帖子
%% SOLVE_CLOCK Solves a Final Fantasy XIII-2 clock puzzle
% author: Nathaniel Johnston
% license: GPL2
%
% SOL = SOLVE_CLOCK(CLK) returns a single solution to a clock puzzle, or 0
% if no solution exists (see URL for details)
%
% SOL = SOLVE_CLOCK(CLK,1) returns all solutions to a clock puzzle, or 0
% if no solution exists (see URL for details)
%
% [url]http://www.njohnston.ca/2012/02/counting-and-solving-final-fantasy-xiii-2s-clock-puzzles[/url]
%% Copyright (c) 2012 Nathaniel Johnston
%
% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2
% of the License, or (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
% MA 02110-1301, USA.
%% Code starts here
function sol = solve_clock(clk,f_all)
n = max(size(clk));
tot_sol = [];
if(n <= 1)
sol = 0;
return;
elseif nargin < 2
f_all = 0;
end
for j = 0:(n-1)
sol = move(j,clk,j,n,1);
if(max(size(sol)) > 1)
if(f_all)
tot_sol = [tot_sol;sol];
else
return;
end
end
sol = move(j,clk,j,n,-1);
if(max(size(sol)) > 1)
if(f_all)
tot_sol = [tot_sol;sol];
else
return;
end
end
end
if(f_all && max(size(tot_sol))>0)
sol = tot_sol;
end
end
function sol = move(j,clk,csol,n,dir)
new = mod(j + dir*clk(j+1), n);
tsol = [csol, new];
if(max(csol == new) == 1)
sol = 0;
elseif(max(size(tsol)) == n)
sol = tsol;
else
sol = move(new,clk,tsol,n,1);
if(max(size(sol)) == 1)
sol = move(new,clk,tsol,n,-1);
end
end
end
UID
3156
帖子
42178
精华
18
积分
100098
交易积分
0
阅读权限
60
在线时间
20187 小时
注册时间
2001-7-6
最后登录
2024-11-8
查看详细资料
TOP
控制面板首页
密码修改
积分交易
积分记录
公众用户组
基本概况
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计