Uma boa propriedade de uma linguagem completa de Turing é que ela pode ser usada para escrever qualquer programa, incluindo a simulação de todo o universo.
Seu trabalho é fazer exatamente isso: escreva um programa que simule o universo .
Nota: embora não duvide que você consiga realizar essa tarefa, hoje em dia não tenho tempo livre suficiente para verificar se todas as 10 90 partículas da sua simulação fazem o que realmente deveriam. Portanto, apenas para simplificar o teste e a avaliação, basta que o seu simulador de universo funcione apenas com uma única partícula inicial. Para manter as coisas interessantes, vamos assumir que esta partícula é o recém descoberto Higgs Boson.
Seu universo começa com nada além de um único Boson de Higgs de aproximadamente 120 GeV no meio dele. Para não tornar a saída muito longa, vamos fazer esse universo funcionar em apenas 10 a 25 segundos, em vez de sua "freqüência normal" de 5,4 × 10 a 44 segundos.
Esse bóson de Higgs decai mais cedo ou mais tarde, pois possui meia-vida de 1,6 × 10 a 22 segundos; portanto, a cada toque da simulação, há 0,0433% de chance de decaimento. Você pode conferir aqui o que ela irá deteriorar . Para ter um requisito central e simplificado, listo as taxas de ramificação que você deve usar:
Executando a simulação
A cada marca da simulação, o bóson de Higgs tem 0,0433% de chance de decair. Se isso acontecer, ele se decomporá nas seguintes partículas, com as probabilidades listadas (você deve usar esses nomes na saída):
- quark inferior + antiquark inferior (64,8%)
- 2 W bósons (14,1%)
- 2 glúons (8,82%)
- tau lepton + antitau lepton (7,04%)
- charme quark + charme antiquark (3,27%)
- 2 bósons Z (1,59%)
- 2 fótons (0,223%)
- 1 bóson Z + 1 fóton (0,111%)
- múon + antimônio (0,0244%)
- quark superior + antiquark superior (0,0216%)
Para um total de 100%.
Algumas dessas partículas decaem ainda mais.
W boson : meia-vida de 10 a 25 segundos, isso significa 50% de chance de decair a cada tick em um dos seguintes, com probabilidades iguais:
- pósitron + neutrino
- antimuão + neutrino
- antitau lepton + neutrino
Z boson : meia-vida de 10 a 25 segundos, isso significa 50% de chance de se deteriorar a cada tick em um dos seguintes itens:
- neutrino + antineutrino (20,6%)
- elétron + pósitron (3,4%)
- múon + antimônio (3,4%)
- tau lepton + antitau lepton (3,4%)
- down quark + down antiquark (15,2%)
- quark estranho + antiquark estranho (15,2%)
- quark inferior + antiquark inferior (15,2%)
- up quark + up antiquark (11,8%)
- charme quark + charme antiquark (11,8%)
quark superior : meia-vida de 5 × 10 -25 segundos, isso significa 12,95% de chance de se deteriorar a cada tick para o seguinte, com probabilidades iguais:
- W boson + down quark
- W boson + quark estranho
- W boson + quark inferior
Claro, o bosão W também decairá em breve ...
O antiquark superior comporta-se de maneira semelhante ao quark superior: decai em um boson W e antiquark ad / s / b.
Todas as outras partículas (então todas, exceto os bósons Z e W e os quarks superiores) têm uma meia-vida muitas ordens de magnitude a mais, para não confundir a saída, elas são consideradas estáveis para a nossa simulação .
Como o universo está em grande parte vazio, todas as partículas terão espaço suficiente para si mesmas e não interagirão umas com as outras. Portanto, todas as partículas individuais são independentes uma da outra em todos os aspectos, incluindo as probabilidades de se dividir.
Resultado:
A cada escala da simulação, você deve imprimir o conteúdo do universo simulado em uma nova linha. Por exemplo:
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.
A ordem das partículas na linha não é importante. A formatação, no entanto, deve ser exatamente como no exemplo acima , incluindo pontuação e pluralização. Se você simular um universo (mini-) inteiro, ele deve ficar bonito (e eu queria eliminar o abuso de um requisito de saída não suficientemente estrito)
Cada linha corresponde a 0,1 yoctosegundos, mas você será perdoado se demorar mais do que isso para o seu programa imprimir a saída.
A simulação termina quando apenas partículas "estáveis" permanecem.
Pontuação
Aplicam-se regras de código padrão de golfe.
O gerador de números aleatórios pode ser pseudo-aleatório, mas você deve propagá-lo se o idioma não o difundir por padrão. A distribuição de probabilidade do seu RNG deve ser uniforme.
- Você receberá um bônus de -10% no tamanho do código se o programa usar um número inteiro como entrada e começar com tantos bósons de Higgs.
Exceção para os entusiastas da máquina de Turing.
Para aqueles que ousam tentar a sorte com uma máquina de Turing real ou com um idioma semelhante (como o Brainfuck), sua tarefa é facilitada pelas seguintes alterações nas regras (aplicáveis apenas se o idioma for um derivado do Brainfuck ou um método de Turing muito simplificado máquina, incapaz de atribuir, sem ALU e os valores na fita só podem ser incrementados e decrementados por um) :
- Os nomes das partículas são simplificados para d, s, b, t, u, c para os quarks, v para o neutrino, T para tau lepton, m para múon, g para gluon, p para fóton, Z, W e H para o bósons, - para o elétron e + para o pósitron. A cada marca, uma entrada com o valor 0 ou 1 é fornecida a partir da entrada padrão, indicando se a primeira partícula instável da lista se deteriora ou não.
O exemplo de saída se tornará, portanto,
H
H
H
H
W W
W W
W + n
+ !T n n
SimulateUniverse
função interna?