用JavaScript脚本实现的图灵机

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

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]);

标签:脚本,JavaScript,编程,指针
0
投稿

猜你喜欢

  • sql中 RecordCount=-1问题

    2008-03-02 17:18:00
  • 使用VS2005调试ASP程序方法

    2007-11-02 09:56:00
  • 通过MySQL内置全文检索实现中文的相关检索

    2010-06-11 13:20:00
  • MySql循环插入数据

    2010-10-14 13:50:00
  • 10条影响CSS渲染速度的写法与建议

    2008-09-09 22:02:00
  • mysql 忘记root密码

    2010-12-14 14:50:00
  • SQL Server备份和灾难恢复

    2010-07-02 12:54:00
  • Sql Server 和 Access 操作数据库结构Sql语句

    2008-02-11 18:59:00
  • 微软建议的ASP性能优化28条守则(7)

    2005-05-30 16:02:00
  • 43个应当避免的Web设计错误

    2007-09-30 12:57:00
  • SQL语句操作主从关系表

    2011-06-19 13:19:05
  • javascript实现划词标记+划词搜索功能

    2008-02-21 13:20:00
  • Yahoo!网站性能最佳体验的34条黄金守则——图片、Coockie与移动应用

    2008-05-29 13:44:00
  • Mysql数据库的安全性问题释疑

    2009-02-26 16:20:00
  • 安装了Office2003补丁之后,access不能用,打不开了

    2011-05-12 12:19:00
  • 网马解密大讲堂——网马解密中级篇(Eval篇)

    2009-09-16 16:04:00
  • js表单提交显示进度条

    2007-09-18 13:10:00
  • Javascript 小游戏,“是男人坚持 100 次”

    2009-01-22 14:25:00
  • CSS3的五个使用技巧[译]

    2009-02-19 13:01:00
  • 解决SQLServer最大流水号的两个好方法

    2009-01-13 14:15:00
  • asp之家 网络编程 m.aspxhome.com