JSRobot 通关攻略

群里的 @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

这关不能像上一关一样从新定义函数了,因为明白通知我们不能运用guineaPiggetKeyFromStomach变量了。因为我们是没法拿到闭包函数内里的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来讲,还黑白常轻易的,好几关都是教授教养关比较轻松就可以过去了。相对难一点的关卡活用大脑的话也是比较轻松过了,另外正则考的比较多,固然也算是轻易的正则就是了。

    原文作者:公子
    原文地址: https://segmentfault.com/a/1190000000610206
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞