群里的 @krew 本日问了个题目,源自JSRobot上的一关。看了下JSRobot,跟Untrusted差不多,也是一个代码通关游戏,以为挺风趣,遂玩了一遍。现放上我的通关攻略。
起首放上游戏地点: http://JSRobot.tk
Level 0
这关是教授教养关,根据文字描述直接输入R.right()
即可通关。
Level 1
方向挪动函数教授教养关,代码:
R.right() && R.down()
Level 2
move
函数教授教养关,从新定义var direction = 'right';
即可。
Level 3
这关我也没想那么多,直接一步一步本身移上去了,迎接更简朴的要领。代码:
function go(direction, times) {
times = times || 1;
for(var i=0;i<times;i++) R.move(direction);
}
go('left', 1);
go('up', 2);
go('right', 5);
go('down', 2);
go('right', 3);
go('up', 2);
懒人进阶版:
['left','right','up','down'].forEach(function(d){
window[d] = function(times) {
times = times || 1;
for(var i=0;i<times;i++) R.move(d);
}
});
left()||up(2)||right(5)||down(2)||right(3)||up(2);
Level 4
这关通知我们假如下一步挪动撞墙的话函数就会返回false
,这个给了我一个好点子。话不多说放代码:
var d = ['up', 'right', 'down', 'right', 'up', 'left'];
if(!R.move(d[temp])) temp++;
Level 5
正则和destroy
教授教养贴,正则很简朴,婚配的黑白a-z0-9
的字符,随意来一个即可。代码:
(key = '$') && R.right();
Level 6
standingOn
函数教授教养帖,代码:
if(R.standingOn('^')) R.up();
Level 7
standingOn
函数小进阶,代码:
var d = ['up', 'down', 'left', 'right'];
if(R.standingOn('-')) temp = 3;
else if(R.standingOn('+')) temp = 2;
else if(R.standingOn('2')) temp = 1;
else if(R.standingOn('>')) temp = 0;
R.move(d[temp]);
Level 8
这题就是简朴的考正则了,同标签包裹内容为key
即可。示例代码:
var key = "<div>key</div>";
Level 9
这关的话愿望人人不要被上面的种种标记疑惑,总的来讲从Robot位置抵达f的线路是先往右直走,然后再向下直走,或者是先向下直走然后往右直走。这里的小技能就是运用return
把下面不相关的代码悉数屏蔽掉。代码:
if(!R.right()) R.down();
return true;
Leve 10
这关的难点在于怎样让steps = 4
,因为根据一般思绪的话当抵达1位置的时刻steps == 2
的。这里的解决要领是先右移一次,然后左移一次,再右移。如许就增加了steps
挪动的次数了。别的一个须要注重的是正则那部份,不要被\\1
给骗了,这个不是后项援用,就是一般的字符串。代码:
if(!R.right()) R.left();
key = "<k>\\1<e>\\2<y>\\3";
Level 11
教授教养帖,直接从新定义函数使其返回true
即可。代码:
guineaPig = {
getKeyFromStomach: function() {return true}
};
R.right();
Level 12
这关不能像上一关一样从新定义函数了,因为明白通知我们不能运用guineaPig
和getKeyFromStomach
变量了。因为我们是没法拿到闭包函数内里的key
变量的,所以没法对其值举行变动。然则我们能够另辟蹊径,本身写代码去烧毁而不是用它的代码,因为不能堂堂皇皇的运用destroy
函数,所以我们须要对其举行一些处置惩罚才行。代码:
R["d e s t r o y".split(" ").join("")]("right");
R.right();
Level 13
这一关的目标是要制造一个函数,使得其既返回true
又返回false
。固然,我们如果被这个表象疑惑的话也会搅扰一番的。本关的key在于函数运行了两次。代码:
var a = -1, key = function() {return a++}
R.right();
总结
相对于Untrusted来讲,还黑白常轻易的,好几关都是教授教养关比较轻松就可以过去了。相对难一点的关卡活用大脑的话也是比较轻松过了,另外正则考的比较多,固然也算是轻易的正则就是了。