Одним із приємних властивостей мови, що повністю відповідає Тюрінгу, є те, що вона може використовуватися для написання будь-якої програми, аж до моделювання всього Всесвіту.
Ваше завдання - зробити саме це: написати програму, яка імітує Всесвіт .
Примітка. Хоча я не сумніваюся, що ви зможете виконати це завдання, в наш час у мене не вистачає вільного часу, щоб перевірити, чи всі 10 90 частинок у вашому моделюванні роблять те, що вони насправді повинні робити. Тому виключно для спрощення тестування та оцінювання достатньо, якщо ваш тренажер Всесвіту працює лише з однією стартовою частинкою. Щоб зробити речі цікавими, припустимо, що ця частинка є нещодавно відкритим Хіггсом Бозоном.
Ваш Всесвіт починається ні з чим, крім єдиного Хіггса Босона, приблизно 120 ГеВ в середині нього. Щоб не робити висновок занадто довгим, давайте зробимо цей Всесвіт галочкою лише 10-25 секунд замість його «звичайної тактової частоти» 5,4 × 10–44 секунди.
Цей бозон Хіггса рано чи пізно загниє, оскільки має період напіввиведення 1,6 × 10-22 секунди, тому при кожному галочці моделювання він має 0,0433% шанс загнивання. Ви можете перевірити тут, у що воно занепаде . Щоб мати центральну та спрощену вимогу, я перелічую коефіцієнти розгалуження, які ви повинні використовувати:
Запуск моделювання
При кожному галочці моделювання бозон Хіггса має 0,0433% шансу загнивання. Якщо це станеться, він розпадеться на наступні частинки із переліченими ймовірностями (ви повинні використовувати ці імена у висновку):
- нижній кварк + нижній антикварк (64,8%)
- 2 Вт бозони (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 - бозон і оголошення / с / б антікварк.
У всіх інших частинок (тому всі, окрім Z і W бозонів і верхніх кварків) є напіввиведення на багато порядків довше, щоб не захаращувати вихід, всі вони вважаються стабільними для нашого моделювання .
Оскільки Всесвіт багато в чому порожній, всі частинки матимуть достатньо місця для себе і не будуть взаємодіяти між собою. Тому всі окремі частинки незалежні одна від одної в будь-якому відношенні, включаючи ймовірність розщеплення.
Вихід:
Кожен галочок моделювання, ви повинні надрукувати вміст змодельованого Всесвіту в новий рядок. Наприклад:
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 або іншим чином дуже спрощеною системою Turing- машина, нездатна до призначення, не має ALU та значень на стрічці, може збільшуватися та зменшуватися лише одним) :
- Назви частинок спрощено до d, s, b, t, u, c для кварків, v для нейтрино, T для тау лептону, m для мюона, г для глюона, p для фотона, Z, W і H для бозони, - для електрона і + для позитрона. На кожному галочку вводиться вхід зі значенням 0 або 1 зі стандартного вводу, вказується, чи нестабільна перша частинка у списку занепадає чи ні.
Тому прикладним результатом стане
H
H
H
H
W W
W W
W + n
+ !T n n
SimulateUniverse
вбудовану функцію?