備注:以下是html代碼,需要在瀏覽器環(huán)境下運(yùn)行
<!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>宇宙的產(chǎn)生</title>
</head>
<body>
<!--觀測(cè)區(qū)-->
<p id="box"></p>
<script>
/* 宇宙初始化 */
// 思考零次
var think = 0;
// 宇宙一片虛無(wú)
var AS ? ?= Array();
// 模擬天外天循環(huán)
while (think < 5)
{
? ? // 思考加一
? ? think ? = think + 1;
? ? // 觀察這個(gè)虛無(wú)的宇宙
? ? var len = AS.length;
? ? // console.log(len);
? ? /*
? ? 如果原始宇宙真的是一片虛無(wú),那么由于我們思考了一次,所以原本虛無(wú)的宇宙產(chǎn)生了一種新?tīng)顟B(tài),我們把它記作1,于是宇宙中便多出一個(gè)為1的狀態(tài)。
? ? */
? ? if(len <= 0){
? ? ? ? // 追加新的狀態(tài)
? ? ? ? len = AS.push("1");
? ? }
? ? /*
? ? 宇宙為了回歸虛無(wú)本省,便產(chǎn)生了一個(gè)假虛無(wú)與之對(duì)應(yīng),為了方便起見(jiàn)記作0,于是宇宙中便又多出了一個(gè)為0的狀態(tài)。
? ? */
? ? // 返回宇宙中最新生成的狀態(tài)。
? ? var index = len - 1;
? ? var str ? = AS[index];
? ? //console.log(str);
? ? var newS ?= Reverse(str);// 調(diào)用翻轉(zhuǎn)函數(shù)
? ? // 在已知世界的另一頭添加一個(gè)反狀態(tài)
? ? AS.unshift(newS);
? ? //console.log(AS);
? ? /*
? ? 這個(gè)原本虛無(wú)的宇宙在回歸的虛無(wú)本身的時(shí)候創(chuàng)造出了更多的狀態(tài),比如0和1的各種組合,從此陷入無(wú)限循環(huán)之中。
? ? */
? ? ArrayS(AS,str);
? ? // 打印結(jié)果
? ? console.log('思考次數(shù):' + think);
? ? //show(AS);//觀察者效應(yīng)
}
//顯示宇宙的的顏色
show(AS);
// 思考宇宙的方式?jīng)Q定了宇宙的形態(tài)
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);
? ? ? ? // 模擬量子態(tài)
? ? ? ? var s2 = Reverse(s1);
? ? ? ? as.push(s2);
? ? ? ? // 慎用迭代
? ? ? ? //ArrayS(as,s1);
? ? }
? ? return as;
}
// 取反 歸零
function Reverse(s){
? ? // 返回字符串的長(zhǎng)度
? ? 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;
}
/*
感覺(jué)與映射
*/
function show(as){
? ? //console.log(as);
? ? // 從整體觀察宇宙
? ? var string = as.join('');
? ? //console.log(string);
? ? // 采用CSS標(biāo)準(zhǔn)中的RGB方式進(jìn)行渲染,最多8位二進(jìn)制
? ? 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);
? ? ? ? // 二進(jìn)制轉(zhuǎn)十進(jìn)制
? ? ? ? var r = parseInt(red,2);
? ? ? ? var g = parseInt(green,2);
? ? ? ? var b = parseInt(blue,2);
? ? ? ? show_div(r,g,b);
? ? }
}
// 創(chuàng)建并顯示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>