Betrachten Sie die folgende Zeichenfolge:
Tin Snips
Diese Zeichenfolge enthält mehrere Atomsymbole im Periodensystem . Wir könnten diesen String umschreiben, um mehrere von ihnen zu identifizieren:
[Ti][N] [Sn][I][P][S]
Natürlich könnten wir es auch so schreiben:
T[In] [S][Ni][P][S]
Die Regeln zum Umschreiben der Eingabe lauten wie folgt:
- Der Fall der Eingabe spielt im Hinblick auf übereinstimmende Atomsymbole keine Rolle.
- Wenn ein Element in einem atomaren Symbol verwendet wird, muss sich die Groß- und Kleinschreibung ändern, damit das Symbol korrekt ist. Bsp .:
h
würde werden[H]
. - Alle Elementsymbole sind in eckigen ASCII-Klammern
[
und eingeschlossen]
. - Leerzeichen bleiben erhalten:
Big ego
"g" und "e" können nicht kombiniert werden[Ge]
. - Nicht alle eingegebenen Zeichen müssen zu einem atomaren Symbol kombiniert werden: Wenn ein eingegebenes Zeichen nicht in ein Symbol eingefügt wird, wird es unverändert weitergegeben (Groß- / Kleinschreibung spielt keine Rolle).
- Wenn ein Symbol erstellt werden kann, muss es erstellt werden. Mit anderen Worten, die Ausgabe
Tin
im obigen Beispiel ist nicht zulässig, da in diesem Wort mindestens ein Symbol erstellt werden kann. Ein Zeichen kann nur dann unbenutzt durchlaufen werden, wenn es nicht zum Aufbau eines Atomsymbols verwendet werden kann. - Für diese Herausforderung gelten alle Elemente von Wasserstoff (1) bis Oganesson (118). Es sind keine höheren Elemente gültig.
- Einige der höheren Elemente haben mehrdeutige Namen und Symbole: Für diese Herausforderung wird die Version bei Wikipedia verwendet. Der Einfachheit halber sind die zulässigen Atomsymbole hier: 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, Ich, 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, Nein, Lr, Rf, Db, Sg, Bh, HS, Mt, DS, Rg, Cn, NH, FL, Mc, Lv, Ts, Og.
Schreiben Sie ein Programm oder eine Funktion, die alle möglichen Ausgaben aus einer einzigen bereitgestellten Eingabe generiert. Sowohl die Eingabe als auch die Ausgabe kann in einer beliebigen Form erfolgen. Dies kann eine Zeichenfolge, ein Array von Zeichen oder eine andere Datenstruktur sein: Was auch immer bequem ist und die Eingabe und Ausgabe klar darstellt. Sowohl die Eingabe als auch die Ausgabe können in Ihren Code eingegeben / ausgegeben werden, ganz gleich, wie Sie sich entscheiden: Standardeingabe / -ausgabe, Funktionsargument / -rückgabe oder etwas anderes.
- Die Eingabe muss eine Zeichenfolge (siehe vorheriger Absatz) mit positiver Länge sein, die nur ASCII-Zeichen in willkürlicher Schreibweise und das Leerzeichen (
0x20
) enthält. - Ihr Code muss alle Ausgabezeichenfolgen generieren, die mithilfe der obigen Eingaberegeln erstellt werden können.
- Die Reihenfolge der Ausgabe ist implementierungsdefiniert. Die einzige Voraussetzung ist, dass alle Ausgabe-Strings vorhanden sind.
- Wenn eine gültige Eingabezeichenfolge angezeigt wird, die keine atomaren Symbole enthält, geben Sie einfach die Eingabezeichenfolge aus.
- Wenn eine Eingabezeichenfolge angezeigt wird, die gemäß den obigen Regeln nicht gültig ist (null, null Zeichen, enthält unzulässige Zeichen usw.), kann Ihr Programm alles tun (Absturz, leere Ausgabe usw.).
- Bei der Ausgabe wird die Groß- / Kleinschreibung nicht berücksichtigt, außer bei atomaren Symbolen, die mit dem Periodensystem übereinstimmen müssen.
- Standardlücken sind nicht erlaubt.
Testfälle:
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]
Das ist Codegolf, also lass mich deinen kürzesten Code sehen!
Q[U][Ac][K]
und Q[U]a[C][K]
. Recht?
T[I][N]
nicht,[T][I][N]
weil T kein Element ist. Meine Frage (und möglicherweise Rassars) lautet: Müssen wir nur 1 angeben. Nur Ausgaben, bei denen die maximale Anzahl von Elementunterteilungen erfolgt? 2. Nur die minimale Menge an Verschwendung? (Das HeHe mit Wasserstoff gibt an, dass die Antwort auf diese Frage Nein lautet.) 3. Alle Ausgaben, bei denen Übereinstimmungen vollständig erschöpft sind? (in diesem FallT[I][N]
auchT[In]
gültig.) Ich denke, die richtige Interpretation ist 3.