创世源码

2022-01-12  本文已影响0人  岑子哥

备注:以下是html代码,需要在浏览器环境下运行

<!DOCTYPE html>

<html lang="zh-CN">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <style>

        div{width: 10px; height: 10px; border: 0px; float: left;}

    </style>

    <title>宇宙的产生</title>

</head>

<body>

<!--观测区-->

<p id="box"></p>

<script>

/* 宇宙初始化 */

// 思考零次

var think = 0;

// 宇宙一片虚无

var AS    = Array();

// 模拟天外天循环

while (think < 5)

{

    // 思考加一

    think   = think + 1;

    // 观察这个虚无的宇宙

    var len = AS.length;

    // console.log(len);

    /*

    如果原始宇宙真的是一片虚无,那么由于我们思考了一次,所以原本虚无的宇宙产生了一种新状态,我们把它记作1,于是宇宙中便多出一个为1的状态。

    */

    if(len <= 0){

        // 追加新的状态

        len = AS.push("1");

    }

    /*

    宇宙为了回归虚无本省,便产生了一个假虚无与之对应,为了方便起见记作0,于是宇宙中便又多出了一个为0的状态。

    */

    // 返回宇宙中最新生成的状态。

    var index = len - 1;

    var str   = AS[index];

    //console.log(str);

    var newS  = Reverse(str);// 调用翻转函数

    // 在已知世界的另一头添加一个反状态

    AS.unshift(newS);

    //console.log(AS);

    /*

    这个原本虚无的宇宙在回归的虚无本身的时候创造出了更多的状态,比如0和1的各种组合,从此陷入无限循环之中。

    */

    ArrayS(AS,str);

    // 打印结果

    console.log('思考次数:' + think);

    //show(AS);//观察者效应

}

//显示宇宙的的颜色

show(AS);

// 思考宇宙的方式决定了宇宙的形态

function ArrayS(as,str){

    var l = as.length -1;

    // 新的组合

    for(var i=0;i<l;i++){

        var s1 = as[i].concat(str);

        as.push(s1);

        // 模拟量子态

        var s2 = Reverse(s1);

        as.push(s2);

        // 慎用迭代

        //ArrayS(as,s1);

    }

    return as;

}

// 取反 归零

function Reverse(s){

    // 返回字符串的长度

    var l = s.length;

    var a = '';

    for(var i=0;i<l;i++){

        var ss = s.substr(i,1);

        if(ss == '1'){

            ss = '0';

        }else{

            ss = '1';

        }

        // 拼接字符串

        a = a.concat(ss);

    }

    // console.log(a);

    return a;

}

/*

感觉与映射

*/

function show(as){

    //console.log(as);

    // 从整体观察宇宙

    var string = as.join('');

    //console.log(string);

    // 采用CSS标准中的RGB方式进行渲染,最多8位二进制

    var l = string.length;

    for(var i=0;i<l;i+=24){

        var red   = string.substr(i,8);

        var green = string.substr(i+8,8);

        var blue  = string.substr(i+16,8);

        // 二进制转十进制

        var r = parseInt(red,2);

        var g = parseInt(green,2);

        var b = parseInt(blue,2);

        show_div(r,g,b);

    }

}

// 创建并显示DIV

function show_div(r,g,b){

    var div = document.createElement("div");

    div.style.backgroundColor = "rgb("+r+","+g+","+b+")";

    document.getElementById("box").appendChild(div);

}

</script>

</body>

</html>

上一篇下一篇

猜你喜欢

热点阅读