チューリング完全言語の優れた特性の1つは、ユニバース全体のシミュレーションを含む、あらゆるプログラムの記述に使用できることです。
あなたの仕事はまさにそれをすることです:宇宙をシミュレートするプログラムを書く。
注:このタスクを達成できることは間違いありませんが、最近では、シミュレーション内の10 90個のパーティクルすべてが実際にすべきことを行うかどうかを検証するのに十分な余裕がありません。したがって、テストと評価を単純化するためだけに、ユニバースシミュレータが単一の開始パーティクルでのみ動作する場合は十分です。面白くするために、この粒子が最近発見されたヒッグスボソンであると仮定しましょう。
あなたの宇宙は、その中央にある約120 GeVの単一のヒッグスボソンだけで始まります。出力を長くしすぎないようにするには、5.4×10 -44秒という「通常のクロックレート」の代わりに、このユニバースをわずか10 -25秒で刻みましょう。
このヒッグス粒子は半減期が1.6×10 −22秒であるため遅かれ早かれ減衰するため、シミュレーションのティックごとに0.0433%の確率で減衰します。ここで何に崩壊するか確認できます。中心的で簡素化された要件を実現するために、使用する分岐比率をリストします。
シミュレーションを実行する
シミュレーションの各ティックで、ヒッグス粒子は減衰する可能性が0.0433%あります。それが起こると、リストされた確率で、次の粒子に崩壊します(これらの名前を出力で使用する必要があります)。
- ボトムクォーク+ボトムクォーク(64.8%)
- 2 Wボソン(14.1%)
- 2グルオン(8.82%)
- タウ・レプトン+アンチタウ・レプトン(7.04%)
- チャームクォーク+チャームアンチクォーク(3.27%)
- 2 Zボソン(1.59%)
- 2光子(0.223%)
- 1 Zボソン+ 1光子(0.111%)
- ミューオン+反ミューオン(0.0244%)
- トップクォーク+トップ反クォーク(0.0216%)
合計で100%。
これらの粒子の一部はさらに減衰します。
Wボソン:10 -25秒の半減期。これは、すべてのティックで50%の確率で等しい確率で次のいずれかに減衰することを意味します。
- 陽電子+ニュートリノ
- 反ミューオン+ニュートリノ
- アンティタウレプトン+ニュートリノ
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ボソン+ストレンジクォーク
- Wボソン+ボトムクォーク
もちろん、Wボソンもすぐに崩壊します...
トップantiquarkは、トップクォークと同様に動作します。それはWボソンと広告/ S / B antiquarkに崩壊します。
他のすべての粒子(Zボゾンとトップクォークを除くすべて)の半減期は数桁長いため、出力が乱雑にならないように、これらはすべてシミュレーションで安定していると見なされます。
宇宙の大部分は空であるため、すべての粒子には十分なスペースがあり、相互作用しません。したがって、すべての個々の粒子は、分割の確率を含め、あらゆる点で互いに独立しています。
出力:
シミュレーションのティックごとに、シミュレートされたユニバースのコンテンツを新しい行に印刷する必要があります。例えば:
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ヨクト秒に対応しますが、プログラムが出力を印刷するのにかかる時間よりも長い場合は許容されます。
シミュレーションは、「安定した」粒子のみが残ると終了します。
得点
標準コードのゴルフ規則が適用されます。
乱数ジェネレーターは疑似ランダムにすることができますが、デフォルトで言語がシードしない場合はシードする必要があります。RNGの確率分布は均一でなければなりません。
- プログラムが整数を入力として受け取り、その数のヒッグス粒子で始まる場合、コードサイズの-10%のボーナスが得られます。
チューリングマシン愛好家の例外。
実際のチューリングマシンまたは類似の言語(Brainfuckなど)で運試しをする人は、次のルール変更によりタスクが簡単になります(言語がBrainfuck派生または非常に単純化されたチューリングの場合のみ適用可能)マシン、割り当て不可、ALUの欠如、およびテープ上の値は1だけ増分および減分できます):
- 粒子名は、クォークのd、s、b、t、u、c、ニュートリノのv、タウレプトンのT、ミュオンのm、グルオンのg、光子のp、光子のZ、WおよびHに簡略化されていますボソン-電子に対して+、陽電子に対して+。各ティックで、0または1の値を持つ入力が標準入力から提供され、リスト内の最初の不安定な粒子が減衰するかどうかが示されます。
したがって、出力例は次のようになります
H
H
H
H
W W
W W
W + n
+ !T n n
SimulateUniverse
組み込み関数がありますか?