次の文字列を検討してください。
Tin Snips
この文字列には、周期表の原子記号がいくつか含まれています。これらのいくつかを識別するために、この文字列を書き換えることができます。
[Ti][N] [Sn][I][P][S]
もちろん、次のように書くこともできます。
T[In] [S][Ni][P][S]
入力を書き換える規則は次のとおりです。
- 入力の大文字小文字は、アトミックシンボルの一致に関しては重要ではありません。
- 要素がアトミックシンボルで使用される場合、シンボルが正しいように大文字と小文字を変更する必要があります。例:
h
になり[H]
ます。 - すべての要素のシンボルはASCII角括弧に包まれ、されている
[
と]
。 - 空白は保持さ
Big ego
れ[Ge]
ます。「g」と「e」をに結合することはできません。 - すべての入力文字をアトミックシンボルに結合する必要はありません。入力文字がシンボルに入れられない場合、そのまま渡されます(大文字と小文字は区別されません)。
- シンボルを作成できる場合は、作成する必要があります。つまり、
Tin
上記の例では、その単語に少なくとも1つのシンボルを作成できるため、出力することはできません。未使用の文字を通過できるのは、アトミックシンボルの構築に使用できない場合だけです。 - この課題のために、水素(1)からオガネソン(118)までのすべての要素が有効です。有効な上位要素はありません。
- 上位の要素のいくつかは、あいまいな名前と記号を持っています。この課題のために、Wikipediaのバージョンが使用されます。便宜上、許容される原子記号は次のとおりです。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。
提供された単一の入力からすべての可能な出力を生成するプログラムまたは関数を作成します。入力と出力の両方は、任意の形式にすることができます。これは、文字列、文字の配列、またはその他のデータ構造である可能性があります。便利で入力と出力を明確に表すものであれば何でもかまいません。入力と出力の両方をコードの入出力に渡すことができますが、標準の入出力、関数の引数/戻り値、またはその他の選択を選択できます。
- 入力は、任意の大文字小文字のASCII文字とスペース(
0x20
)文字のみを含む正の長さの文字列(前の段落を参照)でなければなりません。 - コードは、上記の入力ルールを使用して作成できるすべての出力文字列を生成する必要があります。
- 出力の順序は実装定義です。唯一の要件は、すべての出力文字列が存在することです。
- アトミックシンボルを含まない有効な入力文字列が提示された場合、単に入力文字列を出力します。
- 上記のルールに従って無効な入力文字列(null、ゼロ文字、不正な文字が含まれているなど)が提示された場合、プログラムは何でもできます(クラッシュ、空白出力など)。
- 周期表と一致する必要があるアトミックシンボル以外の出力では、大文字と小文字は区別されません。
- 標準の抜け穴は許可されていません。
テストケース:
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]
これはコードゴルフですので、最短のコードを見てみましょう。
Q[U][Ac][K]
とQ[U]a[C][K]
。右?
T[I][N]
ません[T][I][N]
Tは要素ではないので。私の質問(そしておそらくRassarのもの)は次のとおりです。1だけを与える必要がありますか?2.最小限の無駄だけですか?(水素を含むHeHeは、これに対する答えが「いいえ」であることを示します)3.一致が完全に使い果たされたすべての出力?(この場合T[I][N]
だけでなく、としてT[In]
有効となります。)私が思う正しい解釈が3である