前書き
化学には、.xyz拡張子(https://en.wikipedia.org/wiki/XYZ_file_format)のタイプがあり、化学要素と各要素の平面の座標が各行に出力されます。これは、化学者が化合物を理解し、3Dで化合物を視覚化するのに非常に役立ちます。.xyzファイルを指定して、化学式を印刷するのは楽しいと思いました。
チャレンジ
.xyzファイルを指定して、任意のプログラミング言語で化合物の化学式を可能な限り少ないバイト数で出力します。注意:
- もともと、入力はファイルとして与えられるべきでした。私が指摘したように、これは挑戦を制約します。したがって、入力が文字列のリスト/配列であり、それぞれが.xyzファイルの行を表すと想定する場合があります。
- 要素の順序に制限はありません。
- 各要素は、要素とその出現回数を区切るアンダースコア「_」で印刷する必要があります
- .xyzファイルの最初の2行は、要素の数とコメント行です(覚えておいてください)。
入力と出力の例
以下を含むファイルp.xyzがあるとします(最初の行は要素の数、2番目の行はコメントです)。
5
A mystery chemical formula...
Ba 0.000 0.000 0.000
Hf 0.5 0.5 0.5
O 0.5 0.5 0.000
O 0.5 0.000 0.5
O 0.000 0.5 0.5
出力:
Ba_1Hf_1O_3
テスト中
簡単なテストは、上記の例で行われます。より徹底的なテストは次のとおりです。テストファイルは数千行なので、.xyzファイルを共有します。https://gist.github.com/nachonavarro/1e95cb8bbbc644af3c44
入力をファイルから不必要にそして不当に読み取るよう要求することは、プログラミング言語の非常に重要な部分があなたの挑戦に参加することを禁止します。参照:meta.codegolf.stackexchange.com/a/8077/3808、meta.codegolf.stackexchange.com/q/2447/3808
—
ドアノブ
@Doorknob良い点。私はそれを変更しました。
—
McGuire
@Mego今はどう?:)
—
McGuire
大規模なテストケースの答えは何ですか?
—
Maltysen
出力の順序は重要ですか?
—
デジタルトラウマ2016年