Considérez la chaîne suivante:
Tin Snips
Cette chaîne contient plusieurs symboles atomiques sur le tableau périodique . Nous pourrions réécrire cette chaîne pour en identifier plusieurs:
[Ti][N] [Sn][I][P][S]
Bien sûr, nous pourrions également l'écrire de cette façon:
T[In] [S][Ni][P][S]
Les règles de réécriture de l'entrée sont les suivantes:
- Le cas de l'entrée n'a pas d'importance en termes de correspondance des symboles atomiques.
- Si un élément est utilisé dans un symbole atomique, sa casse doit changer pour que le symbole soit correct. Ex:
h
deviendrait[H]
. - Tous les symboles d'élément sont placés entre crochets ASCII
[
et]
. - L'espace est préservé:
Big ego
ne peut pas combiner le "g" et le "e" dans[Ge]
. - Tous les caractères d'entrée ne doivent pas être combinés en un symbole atomique: si un caractère d'entrée n'est pas placé dans un symbole, il est transmis tel quel (la casse n'a pas d'importance).
- Si un symbole peut être créé, il doit l' être. En d'autres termes, il n'est pas autorisé à sortir
Tin
dans l'exemple ci-dessus car il est possible de créer au moins un symbole dans ce mot. Le seul moment où un personnage peut passer inutilisé est lorsqu'il ne peut pas être utilisé pour construire un symbole atomique. - Aux fins de ce défi, tous les éléments de l'hydrogène (1) à Oganesson (118) sont valides. Aucun élément supérieur n'est valide.
- Certains des éléments supérieurs ont des noms et des symboles ambigus: aux fins de ce défi, la version sur Wikipedia doit être utilisée. Pour plus de commodité, les symboles atomiques autorisés sont ici: 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, In, Sn, Sb, Te, I, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, Eu, 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, No, Lr, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og, Og.
Écrivez un programme ou une fonction qui génère toutes les sorties possibles à partir d'une seule entrée fournie. L'entrée et la sortie peuvent être dans n'importe quelle forme de votre choix. Cela peut être une chaîne, un tableau de caractères ou une autre structure de données: tout ce qui est à la fois pratique et représente clairement l'entrée et la sortie. L'entrée et la sortie peuvent être transmises dans / hors de votre code comme vous le souhaitez: entrée / sortie standard, argument de fonction / retour, ou autre chose.
- L'entrée doit être une chaîne (voir le paragraphe précédent) de longueur positive contenant uniquement des caractères ASCII de casse arbitraire et le caractère espace (
0x20
). - Votre code doit générer toutes les chaînes de sortie qui peuvent être créées à l'aide des règles d'entrée ci-dessus.
- L'ordre de sortie est défini par l'implémentation. La seule exigence est que toutes les chaînes de sortie soient présentes.
- S'il est présenté avec une chaîne d'entrée valide qui ne contient aucun symbole atomique, il suffit de sortir la chaîne d'entrée.
- S'il est présenté avec une chaîne d'entrée qui n'est pas valide selon les règles ci-dessus (null, zéro caractère, contient des caractères illégaux, etc.) votre programme peut faire n'importe quoi (plantage, sortie vide, etc.)
- La sortie est insensible à la casse autre que les symboles atomiques qui doivent correspondre au tableau périodique.
- Les échappatoires standard ne sont pas autorisées.
Cas de test:
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]
C'est le code golf, alors laissez-moi voir votre code le plus court!
Q[U][Ac][K]
et Q[U]a[C][K]
. Droite?
T[I][N]
pas[T][I][N]
parce que T n'est pas un élément. Ma question (et peut-être celle de Rassar) est: devons-nous seulement donner 1. Seules les sorties où le nombre maximal de substitutions d'éléments sont effectuées? 2. Seulement la quantité minimale de gaspillage? (Le HeHe avec des hydrogènes indique que la réponse à celle-ci est non) 3. Toutes les sorties où les correspondances sont complètement épuisées? (dans ce casT[I][N]
, ainsi queT[In]
serait valide.) Je pense que l'interprétation correcte est 3.