Bernd là một học sinh trung học có một số vấn đề về hóa học. Trong lớp, anh ta phải thiết kế các phương trình hóa học cho một số thí nghiệm họ đang làm, chẳng hạn như đốt cháy heptan:
C 7 H 16 + 11O 2 → 7CO 2 + 8H 2 O
Vì toán học không chính xác là môn học mạnh nhất của Bernd, anh ta thường gặp khó khăn trong việc tìm ra các tỷ lệ chính xác giữa các hoạt động và giáo dục về phản ứng. Vì bạn là gia sư của Bernd, nên công việc của bạn là giúp anh ấy! Viết chương trình, tính toán số lượng của từng chất cần thiết để có được phương trình hóa học hợp lệ.
Đầu vào
Đầu vào là một phương trình hóa học không có số lượng. Để thực hiện điều này trong ASCII thuần túy, chúng tôi viết bất kỳ đăng ký nào dưới dạng số thông thường. Tên các phần tử luôn bắt đầu bằng chữ in hoa và có thể được theo sau bởi một chữ nhỏ. Các phân tử được phân tách bằng +
các dấu hiệu, một mũi tên nghệ thuật ASCII ->
được chèn vào giữa cả hai mặt của phương trình:
Al+Fe2O4->Fe+Al2O3
Đầu vào được kết thúc bằng một dòng mới và sẽ không chứa bất kỳ khoảng trắng nào. Nếu đầu vào không hợp lệ, chương trình của bạn có thể làm bất cứ điều gì bạn muốn.
Bạn có thể giả sử rằng đầu vào không bao giờ dài hơn 1024 ký tự. Chương trình của bạn có thể đọc đầu vào từ đầu vào tiêu chuẩn, từ đối số đầu tiên hoặc theo cách thực hiện được xác định trong thời gian chạy nếu không thể.
Đầu ra
Đầu ra của chương trình của bạn là phương trình đầu vào tăng thêm số. Số lượng nguyên tử cho mỗi nguyên tố phải giống nhau ở cả hai phía của mũi tên. Đối với ví dụ trên, một đầu ra hợp lệ là:
2Al+Fe2O3->2Fe+Al2O3
Nếu số cho một phân tử là 1, hãy bỏ nó. Một số phải luôn là số nguyên dương. Chương trình của bạn phải mang lại số lượng sao cho tổng của chúng là tối thiểu. Chẳng hạn, những điều sau đây là bất hợp pháp:
40Al+20Fe2O3->40Fe+20Al2O3
Nếu không có giải pháp, hãy in
Nope!
thay thế. Một đầu vào mẫu không có giải pháp là
Pb->Au
Quy tắc
- Đây là mã golf. Mã ngắn nhất sẽ thắng.
- Chương trình của bạn phải chấm dứt trong thời gian hợp lý cho tất cả các đầu vào hợp lý.
Các trường hợp thử nghiệm
Mỗi trường hợp kiểm tra có hai dòng: Một đầu vào và một đầu ra đúng.
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
và eval(
để giải thích đầu vào :)