Bernd, kimyada bazı problemleri olan bir lise öğrencisidir. Sınıfta heptan yanması gibi yaptıkları bazı deneyler için kimyasal denklemler tasarlamalıdır:
Cı- 7 , H 16 + 11o 2 → 7CO 2 + 8H 2 O
Matematik tam olarak Bernd'in en güçlü konusu olmadığından, reaksiyonun yanlısı ve eğiticileri arasındaki kesin oranları bulmakta sık sık zorlanır. Bernd'in hocası olduğunuzdan, ona yardım etmek sizin işiniz! Geçerli bir kimyasal denklem elde etmek için gereken her bir maddenin miktarını hesaplayan bir program yazın.
Giriş
Giriş, miktarı olmayan kimyasal bir denklemdir. Bunu saf ASCII'de mümkün kılmak için, abonelikleri normal sayılar olarak yazarız. Öğe adları her zaman büyük harfle başlar ve ardından bir eksi eklenebilir. Moleküller +
işaretlerle ayrılır ->
, denklemin her iki tarafının arasına bir ASCII-art ok eklenir:
Al+Fe2O4->Fe+Al2O3
Giriş yeni bir satırla sonlandırılır ve boşluk içermez. Giriş geçersizse, programınız ne istersen yapabilir.
Girişin asla 1024 karakterden uzun olmadığını varsayabilirsin. Programınız girişi standart girdiden, ilk argümandan veya mümkün değilse çalışma zamanında tanımlanmış bir şekilde okuyabilir.
Çıktı
Programınızın çıktısı, ekstra sayılarla artırılan giriş denklemidir. Her eleman için atom sayısı, okun her iki tarafında aynı olmalıdır. Yukarıdaki örnek için geçerli bir çıktı:
2Al+Fe2O3->2Fe+Al2O3
Bir molekül için sayı 1 ise, bırakın. Bir sayı her zaman pozitif bir tamsayı olmalıdır. Programınız, toplamları minimum olacak şekilde sayılar vermelidir. Örneğin, aşağıdakiler yasaktır:
40Al+20Fe2O3->40Fe+20Al2O3
Bir çözüm yoksa, yazdır
Nope!
yerine. Çözümü olmayan bir örnek giriş
Pb->Au
kurallar
- Bu kod golfü. En kısa kod kazanır.
- Tüm makul girdiler için programınız makul sürede sona ermelidir.
Test Kılıfları
Her test durumunun iki satırı vardır: Bir giriş ve doğru çıkış.
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
işlevini kullanarak eval(
ve girdiyi yorumlamak için kimyasal bir denklem çözücü yazdım :)