Bernd는 화학에 문제가있는 고등학생입니다. 클래스에서 그는 헵탄의 연소와 같이 그들이하고있는 실험에 대한 화학 방정식을 설계해야한다 :
C 7 H 16 + 11O 2 → 7CO 2 + 8H 2 O
수학은 정확하게 Bernd의 가장 강한 주제가 아니기 때문에 종종 반응의 생산과 교육 사이의 정확한 비율을 찾는 데 어려움을 겪고 있습니다. 당신은 Bernd의 교사이기 때문에 그를 도와주는 것이 당신의 일입니다! 유효한 화학 방정식을 얻는 데 필요한 각 물질의 양을 계산하는 프로그램을 작성하십시오.
입력
입력은 양이없는 화학 방정식입니다. 순수한 ASCII로 이것을 가능하게하기 위해 구독을 일반 숫자로 씁니다. 요소 이름은 항상 대문자로 시작하며 그 뒤에 마이너스가 올 수 있습니다. 분자는 +
부호 로 분리되며 ASCII 아트 화살표 ->
가 방정식의 양쪽에 삽입됩니다.
Al+Fe2O4->Fe+Al2O3
입력은 개행으로 끝나며 공백을 포함하지 않습니다. 입력이 유효하지 않으면 프로그램이 원하는대로 수행 할 수 있습니다.
입력이 1024자를 넘지 않는다고 가정 할 수 있습니다. 프로그램은 표준 입력, 첫 번째 인수 또는 런타임에 구현 정의 된 방식으로 입력을 읽을 수 있습니다.
산출
프로그램의 출력은 추가 숫자로 보강 된 입력 방정식입니다. 각 요소의 원자 수는 화살표의 양쪽에서 동일해야합니다. 위의 예에서 유효한 출력은 다음과 같습니다.
2Al+Fe2O3->2Fe+Al2O3
분자의 수가 1 인 경우, 떨어 뜨립니다. 숫자는 항상 양의 정수 여야합니다. 프로그램은 합계가 최소가되도록 숫자를 산출해야합니다. 예를 들어, 다음은 불법입니다 :
40Al+20Fe2O3->40Fe+20Al2O3
해결책이 없으면 인쇄
Nope!
대신에. 솔루션이없는 샘플 입력은
Pb->Au
규칙
- 이것은 코드 골프입니다. 가장 짧은 코드가 승리합니다.
- 귀하의 프로그램은 모든 합리적인 입력에 대해 적절한 시간 내에 종료되어야합니다.
테스트 사례
각 테스트 케이스에는 입력과 올바른 출력의 두 줄이 있습니다.
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
함수를 사용 eval(
하여 입력을 해석하기 위해 TI-89 그래프 계산기에 화학 방정식 솔버를 작성했습니다. :)