ベルントは化学にいくつかの問題がある高校生です。クラスでは、ヘプタンの燃焼など、彼らが行っているいくつかの実験のために化学方程式を設計する必要があります。
C 7 H 16 + 11O 2 →7CO 2 + 8H 2 O
数学は正確にベルントの最強の主題ではないので、彼はしばしば反応のプロダクトとエダクトの正確な比率を見つけるのに苦労しています。あなたはベルントの家庭教師なので、彼を助けるのはあなたの仕事です!有効な化学式を得るために必要な各物質の量を計算するプログラムを作成します。
入力
入力は、量のない化学式です。これを純粋なASCIIで実現するために、サブスクリプションを通常の番号として記述します。要素名は常に大文字で始まり、その後に極小が続く場合があります。分子は+
記号で区切られ、ASCIIアートの矢印->
が方程式の両側に挿入されます。
Al+Fe2O4->Fe+Al2O3
入力は改行で終了し、スペースは含まれません。入力が無効な場合、プログラムは何でも好きなように実行できます。
入力が1024文字より長くなることはないと想定できます。プログラムは、標準入力、最初の引数、またはどちらも不可能な場合は実行時に定義された実装から入力を読み取ることができます。
出力
プログラムの出力は、追加の数値で増補された入力方程式です。各要素の原子の数は、矢印の両側で同じでなければなりません。上記の例の場合、有効な出力は次のとおりです。
2Al+Fe2O3->2Fe+Al2O3
分子の数が1の場合、ドロップします。数値は常に正の整数でなければなりません。プログラムは、合計が最小になるような数値を生成する必要があります。たとえば、次は違法です。
40Al+20Fe2O3->40Fe+20Al2O3
解決策がない場合は、印刷してください
Nope!
代わりに。解のないサンプル入力は
Pb->Au
ルール
- これはコードゴルフです。最短のコードが優先されます。
- プログラムは、すべての妥当な入力に対して妥当な時間内に終了する必要があります。
テストケース
各テストケースには、入力と正しい出力の2行があります。
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
関数を使用eval(
し、入力を解釈するために化学方程式ソルバーを書いたことがあります:)