备注:以下是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>
网友评论