Considere a seguinte string:
Tin Snips
Essa sequência contém vários símbolos atômicos na tabela periódica . Poderíamos reescrever essa sequência para identificar várias delas:
[Ti][N] [Sn][I][P][S]
Claro, também poderíamos escrever desta maneira:
T[In] [S][Ni][P][S]
As regras para reescrever a entrada são as seguintes:
- O caso da entrada não importa em termos de símbolos atômicos correspondentes.
- Se um elemento é usado em um símbolo atômico, sua caixa deve mudar para que o símbolo esteja correto. Ex:
h
se tornaria[H]
. - Todos os símbolos dos elementos estão entre colchetes ASCII
[
e]
. - O espaço em branco é preservado:
Big ego
não é possível combinar o "g" e o "e" em[Ge]
. - Nem todos os caracteres de entrada precisam ser combinados em um símbolo atômico: se um caractere de entrada não for colocado em um símbolo, ele será passado como está (o caso não importa).
- Se um símbolo pode ser criado, ele deve ser criado. Em outras palavras, não é permitido produzir
Tin
no exemplo acima, porque é possível criar pelo menos um símbolo nessa palavra. A única vez que um caractere pode ser passado sem uso é quando ele não pode ser usado para construir um símbolo atômico. - Para os propósitos deste desafio, todos os elementos de Hydrogen (1) a Oganesson (118) são válidos. Nenhum elemento superior é válido.
- Alguns dos elementos superiores têm nomes e símbolos ambíguos: para os fins deste desafio, a versão na Wikipedia deve ser usada. Por conveniência, os símbolos atômicos permitidos estão aqui: H, He, Li, Be, B, C, N, O, F, Ne, Na, Mg, Al, Si, P, S, Cl, Ar, K, Ca, Sc, Ti, V, Cr, Mn, Fe, Co, Ni, Cu, Zn, Ga, Ge, As, Se, Br, Kr, Rb, Sr, Y, Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, Em, Sn, Sb, Te, Eu, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, UE, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Hf, Ta, W, Re, OS, Ir, Pt, Au, Hg, Tl, Pb, Bi, Po, At, Rn, Fr, Ra, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, Não, Lr, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og.
Escreva um programa ou função que gere todas as saídas possíveis a partir de uma única entrada fornecida. Tanto a entrada como a saída podem estar em qualquer forma que você escolher. Pode ser uma cadeia de caracteres, uma matriz de caracteres ou alguma outra estrutura de dados: o que for conveniente e represente claramente a entrada e a saída. Tanto a entrada quanto a saída podem ser passadas para dentro / fora do seu código, mas você escolhe: entrada / saída padrão, argumento / retorno da função ou outra coisa.
- A entrada deve ser uma sequência (ver parágrafo anterior) de comprimento positivo contendo apenas caracteres ASCII de maiúsculas e minúsculas e o
0x20
caractere espaço ( ). - Seu código deve gerar todas as seqüências de saída que podem ser criadas usando as regras de entrada acima.
- A ordem da saída é definida pela implementação. O único requisito é que todas as seqüências de saída estejam presentes.
- Se apresentado com uma sequência de entrada válida que não contém símbolos atômicos, basta gerar a sequência de entrada.
- Se for apresentada uma sequência de entrada que não é válida de acordo com as regras acima (nulo, zero caracteres, contém caracteres ilegais, etc.), seu programa pode fazer qualquer coisa (falha, saída em branco etc.)
- A saída diferencia maiúsculas de minúsculas, exceto símbolos atômicos, que precisam corresponder à tabela periódica.
- Não são permitidas brechas padrão.
Casos de teste:
Tin Snips
[Ti][N] [Sn][I][P][S]
[Ti][N] [S][Ni][P][S]
[Ti][N] [S][N][I][P][S]
T[In] [Sn][I][P][S]
T[In] [S][Ni][P][S]
T[In] [S][N][I][P][S]
T[I][N] ...
Quack
Q[U][Ac][K]
Q[U]a[C][K]
hehe
[H]e[H]e
[H]e[He]
[He][H]e
[He][He]
Stack Exchange
[S][Ta][C][K] Ex[C][H]a[N][Ge]
[S]t[Ac][K] Ex[C][H]a[N][Ge]
Isso é código de golfe, então deixe-me ver seu código mais curto!
Q[U][Ac][K]
e Q[U]a[C][K]
. Direita?
T[I][N]
não[T][I][N]
porque T não é um elemento. Minha pergunta (e possivelmente a de Rassar) é: precisamos apenas fornecer 1. Somente saídas onde é feito o número máximo de sub-substituições de elementos? 2. Apenas a quantidade mínima de desperdício? (O HeHe com hidrogênios indica que a resposta é negativa) 3. Todas as saídas em que as correspondências estão completamente esgotadas? (neste casoT[I][N]
, bem comoT[In]
seria válido.) Acho que a interpretação correta é 3. #