图灵完备语言的一个不错的特性是,它可以用来编写任何程序,甚至可以模拟整个宇宙。
您的工作就是做到这一点:编写一个模拟Universe的程序。
注意:尽管我毫不怀疑您将能够完成此任务,但如今我没有足够的业余时间来验证模拟中的所有10 90个粒子是否都按其实际应做的工作。因此,仅是为了简化测试和评估,如果您的Universe模拟器仅适用于单个起始粒子就足够了。为了使事情有趣,让我们假设这个粒子是最近发现的希格斯玻色子。
您的宇宙仅以一个中间约120 GeV的希格斯玻色子开始。为了不使输出太长,让我们使该Universe仅在10 -25秒处滴答,而不是其“常规时钟频率”为5.4×10 -44秒。
希格斯玻色子的衰变半衰期为1.6×10 -22秒,因此迟早会衰变,因此在模拟的每个滴答声中,衰变的可能性为0.0433%。您可以在此处检查它会衰减成什么。为了有一个集中的简化需求,我列出了您应该使用的分支比率:
运行模拟
在每次模拟时,希格斯玻色子都有0.0433%的衰减机会。如果发生这种情况,它将分解为具有列出的概率的以下粒子(您应该在输出中使用这些名称):
- 底夸克+底夸克(64.8%)
- 2 W玻色子(14.1%)
- 2加仑(8.82%)
- 头蛋白轻蛋白+头蛋白轻蛋白(7.04%)
- 夸克+夸克(3.27%)
- 2个玻色子(1.59%)
- 2个光子(0.223%)
- 1 Z玻色子+ 1光子(0.111%)
- 介子+反介子(0.0244%)
- 顶夸克+顶抗夸克(0.0216%)
总计为100%。
这些粒子中的一些会进一步衰减。
W玻色子:半衰期为10 -25秒,这意味着每个滴答声都有50%的机会分解为下列概率相等的下列之一:
- 正电子+中微子
- 反介子+中微子
- Antitau Lepton +中微子
Z玻色子:半衰期为10 -25秒,这意味着在每个刻度上都有50%的机会分解为下列其中之一:
- 中微子+抗中微子(20.6%)
- 电子+正电子(3.4%)
- 介子+反介子(3.4%)
- 牛头顿+牛头顿(3.4%)
- 下夸克+下夸克(15.2%)
- 夸克+夸克(15.2%)
- 底夸克+底夸克(15.2%)
- 夸克+反夸克(11.8%)
- 夸克+夸克(11.8%)
顶夸克:半衰期为5×10 -25秒,这意味着在每个刻度上有12.95%的机会衰减为以下几率,并且概率相同:
- 玻色子+夸克
- 玻色子+夸克
- W玻色子+底夸克
当然,W玻色子也会很快衰减...
的顶夸克的行为类似于顶夸克:它衰变为A,带玻色子和广告/ S / B夸克。
所有其他粒子(除了Z和W玻色子和顶夸克之外的所有粒子)的半衰期更长许多个数量级,因此为了不干扰输出,在我们的模拟中它们都被认为是稳定的。
由于宇宙基本上是空的,所以所有粒子将为自己留有足够的空间,并且不会互相影响。因此,所有单个粒子在各个方面都彼此独立,包括分裂的可能性。
输出:
模拟的每一步都必须将模拟Universe的内容打印到新行中。例如:
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 2 W bosons.
The universe contains 2 W bosons.
The universe contains 1 W boson, 1 positron and 1 neutrino.
The universe contains 1 positron, 1 antitau lepton and 2 neutrinos.
Simulation ended after 0.8 yoctoseconds.
生产线上的颗粒顺序并不重要。但是,格式必须与上面的示例完全相同,包括标点和复数形式。如果您模拟整个(微型)宇宙,它应该看起来不错(我想消除对不够严格的输出要求的滥用)
每行对应于0.1 yoctoseconds,但是如果您花费比程序输出输出更长的时间,您将被原谅。
当仅保留“稳定”的粒子时,模拟结束。
计分
适用标准代码高尔夫规则。
随机数生成器可以是伪随机数,但是如果语言默认情况下不将其作为种子,则必须将其作为种子。您的RNG的概率分布必须均匀。
- 如果程序采用整数作为输入,并以那么多希格斯玻色子开始,则您将获得代码大小的-10%的奖励。
图灵机爱好者的例外。
对于那些敢于尝试使用实际 Turing机器或类似语言(例如Brainfuck)的用户,通过以下规则更改,他们的任务会变得更加容易(仅当语言是Brainfuck衍生语言或其他非常简化的Turing-机器,无法分配,缺少ALU,并且磁带上的值只能递增和递减1):
- 对于夸克,粒子名称简化为d,s,b,t,u,c,对于中微子,v表示tau lepton,t表示mu,m表示胶子,g表示胶子,p表示光子,Z,W和H表示玻色子,-表示电子,+表示正电子。在每个滴答处,从标准输入中提供值为0或1的输入,指示列表中的第一个不稳定粒子是否衰减。
因此,示例输出将变为
H
H
H
H
W W
W W
W + n
+ !T n n
SimulateUniverse
内置功能?