Добрый день коллеги!
Очень нужно реализовать вопросы, ответом на которые должны быть уравнения химических реакций. Например:
2H2 + O2 = 2H2O
2KMnO4 + 16HCl = 5Cl2 + 2MnCl2 + 2KCl + 8H2O
Вопросы типа "с коротким ответом" не годятся, поскольку реагенты и продукты можно записывать в любом порядке, кроме того, студенты могут неверно указать коэффициенты перед веществами, но верно указать набор реагентов и продуктов - предусмотреть все комбинации ответов, безусловно, возможно, но бесконечно трудоёмко. Может быть существует более элегантное решение?
Ну и в качестве бонуса, хотелось бы иметь возможность каким-то образом спрашивать об условиях проведения реакций (обычно, химики указывают таковые над стрелочкой или знаком равенства), а также указания агрегатных состояний веществ, тепловых эффектов и пр., что часто встречается в обычной записи химических уравнений.
Я просмотрел кучу плагинов на эту тему, но, к сожалению, не нашёл ничего подходящего. Приведу некоторые из них здесь, чтобы составить более полное представление о проблеме.
- Name to Structure or Reaction (MarvinJS) - замечательный плагин, отлично подходит для вопросов по органической химии, где всегда нужно рисовать структурную формулу, но не годится для уравнений в неорганической химии, примеры которых приведены выше.
- Regular expression short answer - наверное, с подобной задачей могут справиться регулярные выражения, но их написание уже является непреодолимой преградой для многих преподавателей химии.
- Pattern match - потенциально очень интересный тип вопроса, позволяющий задавать вопросы, на которые студенты могут отвечать осмысленными предложениями. Однако, я не могу представить каким образом нужно "запрограммировать" условия проверки ответов к этому вопросу, чтобы решить поставленную задачу.
- Pattern match with molecular editor / - в принципе, по функционалу очень похож на №1, но использует другой редактор структурных формул.
Есть несколько расширений к редактору Atto, позволяющие относительно легко и просто вводить различные химические формулы и уравнения, однако, это не то, что требуется при создании тестов.
Буду рад любым подсказкам!