Nomeie os Hadrons

19

Desafio

Dada uma composição de quarks de uma partícula como entrada, produza o nome do hadron correspondente.

Os quarks serão representados por uma letra maiúscula e os antiquarks por uma letra minúscula.

Os quarks podem estar em qualquer ordem, não necessariamente na ordem fornecida abaixo.

Funções internas os dados de acesso sobre partículas e / ou quarks não são permitidos.

Os únicos quarks que você recebe são U (para cima), u (anti-ataque), D (para baixo), d (antidown), S (estranho), s (antistrange), C (charme), c (anticharma), B ( fundo ou beleza), b (antibotomia ou antibeleza).

Lista de Hadrons e suas composições de quarks

Observe que, embora existam vários outros hadrons, como pentaquarks e glueballs, etc., você só precisa suportar os hadrons fornecidos nas listas a seguir

Bariões (QQQ) e Antibários (qqq)

Os nomes entre parênteses são nomes alternativos para as partículas. Você pode gerar um ou outro nome.

Input - Output

UUU - delta++
uuu - antidelta++
UUD - delta+ (proton)
uud - antidelta+ (antiproton)
UDD - delta0 (neutron)
udd - antidelta0 (antineutron)
DDD - delta-
ddd - antidelta-
UUS - sigma+
uus - antisigma+
UDS - sigma0
uds - antisigma0
DDS - sigma-
dds - antisigma-
USS - xi0
uss - antixi0
DSS - xi-
dss - antixi-
SSS - omega-
sss - antiomega-

UUC - charmed sigma++
uuc - charmed antisigma++
UDC - charmed sigma+
udc - charmed antisigma+
DDC - charmed sigma0
ddc - charmed antisigma0
UUB - bottom sigma+
uub - bottom antisigma+
UDB - bottom sigma0
udb - bottom antisigma0
DDB - bottom sigma-
ddb - bottom antisigma-
USC - charmed xi+
usc - charmed antixi+
DSC - charmed xi0
dsc - charmed antixi0
UCC - double charmed xi++
ucc - double charmed antixi++
DCC - double charmed xi+
dcc - double charmed antixi+
USB - bottom xi0
usb - bottom antixi0
DSB - bottom xi-
dsb - bottom antixi-
UBB - double bottom xi0
ubb - double bottom antixi0
DBB - double bottom xi-
dbb - double bottom antixi-
UCB - charmed bottom xi+
ucb - charmed bottom antixi+
DCB - charmed bottom xi0
dcb - charmed bottom antixi0
SSC - charmed omega0
ssc - charmed antiomega0
SSB - bottom omega-
ssb - bottom antiomega-
SCC - double charmed omega+
scc - double charmed antiomega+
SCB - charmed bottom omega0
scb - charmed bottom antiomega0
SBB - double bottom omega-
sbb - double bottom antiomega-
CCB - double charmed bottom omega+
ccb - double charmed bottom antiomega+
CBB - charmed double bottom omega0
cbb - charmed double bottom antiomega0
CCC - triple charmed omega++
ccc - triple charmed antiomega++
BBB - triple bottom omega-
bbb - triple bottom antiomega-

Mésons (Qq)

Input - Output

Ud - pion+
Uu - pion0
Dd - pion0
Du - pion-
Us - kaon+
Ds - kaon0
Sd - antikaon0
Su - kaon-
Ss - phion0
Cd - D meson+
Dc - D meson-
Cu - D meson0
Uc - antiD meson0
Cs - strange D meson+
Sc - strange D meson-
Cc - psion0
Bu - B meson-
Ub - B meson+
Db - B meson0
Bd - antiB meson0
Sb - strange B meson0
Bs - strange antiB meson0
Bb - upsilon0

Ganhando

O menor código em bytes vence.

Beta Decay
fonte
11
Funções internas os dados de acesso sobre partículas e / ou quarks não são permitidos. Eu estou olhando para você, Mathematica.
Okx 14/05
Então, esse desafio é essencialmente compactar uma tabela de consulta?
Rohan Jhunjhunwala
3
O Mathematica tem uma ParticleDatafunção com uma QuarkContentopção.
Ian Miller
11
Não parece difícil. Quero dizer, cada quark tem sua própria carga elétrica, você só precisa lidar com o nome, não com a carga.
Matthew Roh
11
1. Parece que os bárions podem ser qualquer combinação de 3 quarks do mesmo caso. Mésons são combinações de 2 quarks de caso oposto, mas são para mesons Cbe Bcestão ausentes. Isso é intencional? 2. Encomendar as letras de maneira diferente significaria a mesma coisa - nosso programa deve ser capaz de lidar com diferentes ordens de letras ou elas sempre serão solicitadas como mostrado? (ou seja, será sempre UDSpor exemplo ou poderia ser SUDou DSUpor exemplo?) Da mesma forma que mésons poderíamos ter uD?
Level River St

Respostas:

5

SOGL 0,11 , 341 339 333 310 305 305 300 bytes

‘θw±
on”≥
0c{≤
”=?"▒
on0”←"█
c SW?"▲
?ļ0←j ►
?"anti”o}▼
SD”;W¡+}□
=?ļ-←ļ+←■
‘B≤a=+}:?"⁽¬Τk⅜K±l?@+}ob@+o}▓
UCl2-? CA"K¼⁶▓ BA"δ╬▓cd≠▼≤: U=; D=++}"8}↕x╔:⁵F┘¹±o≤"B□"κ§)Ƨ7%s±p←"Ss▒phi█Cc▒psi█Bb▒upsil█SdUcBd”2n{=▼}≤"U□1>?▲ka≥pc DW►S■"pi≥Pcρ►D■▲)»β⁴‘o}ƧBs=▼ Dc BW?X B}" mes≥+p"D═S┐╔¬ν↑FνF⌠V3╗βstA\≈²‘:cW2+Wp
dzaima
fonte
12

JavaScript (ES6), 456 448 431 420 bytes

Este código está usando apenas duas pequenas tabelas de pesquisa:

  • um para identificar os quarks: 'CUBDScubds'
  • outro para detectar o prefixo 'anti' dos mésons: 'SdUcBdBs'

Todo o resto é deduzido dos quarks.

(s,[a,b]=[...s].map(c=>(i='CUBDScubds'.search(c)%5,m|=1<<i,j+=i<2,k+=i&1,p+=i?i-2?'':'bottom ':'charmed ',i),m=j=k=0,p=''))=>s[2]?p.replace(/(\w+) \1( \1)?/,(_,a,b)=>b?'triple'+b:'double '+a)+(s>'Z'?'anti':'')+['omega','xi','sigma','delta'][k]+('-0+'[j]||'++'):(m&16&&m&5?'strange ':'')+(~'SdUcBdBs'.search(s)?'anti':'')+(m&1?m^1?'D mes':'psi':m&4?m^4?'B mes':'upsil':m&16?m^16?'ka':'phi':'pi')+'on'+'-0+'[(a<2)-(b<2)+1]

Arnauld
fonte
2

Perl 5, 318 bytes

$_=<>;$h=qw/- ++ + 0/[y/uc//*2*($i=3-map{${lc;}++}/./g)-$u-$c-$i];$a=($i?!$h&&/[dUB]/:/[a-z]/)&&anti;map{/(.)/;$q.=("","$_ ","double $_ ","triple $_ ")[$$1]}charmed,bottom;print(($i?($u+$d>1?pi:$s>1?phi:$c>1?psi:$b>1?upsil:$c+$b?($s?"strange $a":$a).($b?B:D).' mes':$a.ka).on:$q.$a.qw/omega xi sigma delta/[$u+$d]).$h)

Novas linhas adicionadas para facilitar a leitura (ligeiramente):

$_=<>
$h=qw/- ++ + 0/[y/uc//*2*($i=3-map{${lc;}++}/./g)-$u-$c-$i]
$a=($i?!$h&&/[dUB]/:/[a-z]/)&&anti
map{/(.)/;$q.=("","$_ ","double $_ ","triple $_ ")[$$1]}charmed,bottom;
print(($i?($u+$d>1?pi:$s>1?phi:$c>1?psi:$b>1?upsil:$c+$b?($s?"strange $a":$a).($b?B:D).' mes':$a.ka).on:$q.$a.qw/omega xi sigma delta/[$u+$d]).$h)
faubi
fonte