网络编程
位置:首页>> 网络编程>> JavaScript>> 用JavaScript脚本实现的图灵机

用JavaScript脚本实现的图灵机

作者:月影 来源:月影博客 发布时间:2009-01-21 18:10:00 

标签:脚本,JavaScript,编程,指针

Array.prototype._ = function(){
var _p = 0;
var _v = 0;
(function(){
   for(var i = 0; i < arguments.length; i++){
    var c = arguments[i];
   
    if(typeof c == 'number'){
     this[_p] = this[_p] || 0;
     this[_p] += c;
    }
    else if(c instanceof Array){
     if(c.length == 0){
      this[_p] = _v;
     }else if(c.length == 1){
      _v = this[_p];
      _p += c[0];
     }else{
      while(this[_p]){
       arguments.callee.apply(this,c);
      }
     }
    }
   }
}).apply(this, arguments);
return this;
};

[+n]    读取指针处内容并且指针从当前位置前进n步
[-n]     读取指针处内容并且指针从当前位置后退n步
+n       指针指向的字节的值加n
-n        指针指向的字节的值减n
[]         将数据写入指针处
[          如果指针指向的单元值为零,向前跳转到对应的]指令的次一指令处
]          如果指针指向的单元值不为零,向后跳转到对应的[指令的次一指令处

计算1+2+3......+100的值:

alert([100]._([[+1],[],-1],[-1],[[-1,[+1],+1,[-1]],[],[-1]])[0]);

比较两个数的大小,得到较小的那个:

alert([,,4,5,]._([+2],[[-2],+1,[+2],-1,[+1],-1,[0,[+1]],[-2]])[0]);

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com