JavaScript的多世界解释

2020-05-16 05:38:47

如果你可以在另一个宇宙中探索你的代码呢?(音乐提示:也是Sprint Zarathustra,Op.30-Strauss)这是在看了肖恩·卡罗尔(Sean Carroll)关于量子力学多世界解释的演讲后跳入我脑海的问题。

量子力学的多世界解释将我们的宇宙想象成一个无限分支的宇宙树中的一个节点,在那里每一个可能的量子结果都存在于它自己的宇宙中。每次宇宙分支时,都会产生一个与母宇宙略有不同的子宇宙,例如,万有引力和光速等宇宙常数可能会有所不同。

图形TDY(";宇宙)y-->;y_0(";宇宙0&34;)y-->;y_1(";宇宙1";)y_0-->;y_00(";宇宙00&34;)y_0-->;y_01(";宇宙01";)y_1--&G。Y_11(";宇宙11";)。

假设您正在参加求职面试,并且要求您编写FizzBuzz(这可能暗示您正在进行模拟[1]),您决定使用for循环,因此编写以下代码。

1 for(设i=1;i<;=100;i++){2 if(i%15=0){3控制台。log(';FizzBuzz';);4}Else if(i%3=0){5控制台。日志(#39;Fizz';);6}Else if(i%5=0){7控制台。日志(#39;Buzz&39;);8}其他{9控制台。日志(I);10}11}。

根据量子力学的多世界解释,当你决定使用FOR循环的那一刻,你的宇宙就分支成了许多宇宙。在这个宇宙中,您编写了一个for循环,但在另一个宇宙中,您编写了一个while循环。

我已经编写了一个JavaScript命令行工具,它允许您在不同的世界中探索您的代码。它本质上是一个巴别塔插件,可以随机地对你的代码进行转换,这可以归因于人类的决策,从而模拟你可能在另一个世界写的代码。

为了模拟其他领域的结果,这里列出了可能应用于您的代码的所有转换。

如果我们通过命令行工具运行FizzBuzz示例,它将打印出一棵宇宙二叉树,其中包含您在模拟面试期间可能在其他宇宙中编写的代码。

宇宙{深度:0,数据:{//原始父宇宙名称:';世界0';,代码:';for(设i=1;i<;=100;i++){\n';+';if(i%15==0){\n';+";console.log(';Fizzbuzz';);\n";+';}Else If(I%3=0){\n';+";console.log(';Fizz&39;);\n";+';}Else If(I%5=0){\n';+";console.log(';Buzz';);\n";+';}Else{\n';+';+';console.。\n';+';}\n';+';},子代:[语义层{深度:1,数据:{//备用子语义层名称:';世界0=>;世界0₀';,代码:';对于(设i=2;i<;=99;i++){\n';+';If(0=14%i){\n';+";console.log(';FizzBuzz&39;);\n";+';}Else If(2%i=1){\n';+";console.log(';Fizz&39;);\n";+';}Else If(0==6/i){\n&。console.log(';buzz&39;);\n";+';}否则{\n';+';+';}\n';+';}\n';+';}},语义层{深度:1,数据:{//另一个备用子语义层名称:';World 0=>;World 0₁';,代码:';let i=2;\n';+';而(101>;=i){\n';+';if(15%i=0){\n';+";console.log(';Fizzbuzz';);\n";+';}Else If(I%4=1){\n';+";console.log(';Fizz&39;);\n";+';}Else If(I%4<;=0){\n';+";console.log(';Buzz&39;);\n";+';}Else{\n';+';console.log(I);\n';+';}\n';+';\n';+';i++\n';+';}';}}]}。

“模拟假说或模拟理论认为,所有现实,包括地球和宇宙,实际上都是人工模拟,很可能是计算机模拟。”--维基百科(wikipedia.org)。

如果您喜欢这篇文章,您可能还喜欢剖析JavaScript Quine或编写您自己的JavaScript模板标记。