Я должен использовать синтаксический анализатор выражения в своей Математической игре?

Проблема была внутри тестовых случаев. Когда я связал модульный тест с тестовым набором, модульный тест находился в сборке Test, поэтому он пытался разрешить Test.dll.

В тестовом примере справа есть вкладка «Связанная автоматизация»:

enter image description here

7
задан 1 May 2009 в 16:20
поделиться

5 ответов

Одним из возможных решений является отметить, сколько шагов ваш оценщик выражений делает для оценки исходного выражения задачи, и сравнить это с оптимальным ответом. Если есть слишком много различий, то проблема не была достаточно уменьшена, и вы можете предложить ученику продолжать.

Не удивляйтесь, если студенты придумают лучшие ответы, чем ваше собственное определение «оптимального», хотя ! Я был учителем / оценщиком в нескольких классах, и у самых ярких учеников обычно были ответы на их проблемные наборы, которые превосходили те, которые были предоставлены профессором.

5
ответ дан 7 December 2019 в 05:30
поделиться

Для простых задач, в которых вы ищете точный ответ, тогда разумно удалить пробелы и сравнить строки.

Для более сложных задач вы можете использовать алгоритм Shunting Yard (или аналогичный), но, возможно, параметризовать его, чтобы можно было включать / отключать сокращения для защиты от хитрого ученика. Вы заметите, что «простые» ответы все еще могут использовать анализатор, но вы бы отключили все сокращения.

Например, для вопроса о делении вы бы отключили сокращение "/".

2
ответ дан 7 December 2019 в 05:30
поделиться

Это отличный вопрос.

Если вы пишете систему выражений и механизм оценки / преобразования / эквивалентности (разве нет такого где-нибудь? Я почти на 100% уверен, что где-то есть открытый исходный код), тогда это скорее проблема образования / алгебры: является ли ответ ученика алгебраически ближе к исходному выражению или ожидаемому выражению.

Я не уверен, как на это ответить, но просто идея (не обязательно практическая): возможно, ваш механизм оценки может посчитать шаги преобразования в эквивалентность. Если для ответа требуется меньше шагов к ожидаемому, чем для оригинала, возможно, все в порядке. Если это слишком близко к оригиналу, это не так.

1
ответ дан 7 December 2019 в 05:30
поделиться

Вы можете использовать синтаксический анализатор выражений, но применить ограничения на сложность выражений, разрешенных в ответе.

Например, если целью является уменьшение (4/5) * ( 1/2), и вы хотите разрешить (2/5) или (4/10), тогда вы можете ограничить набор допустимых ответов для выражений, деревья которых принимают форму (x / y) и которые также оцениваются как правильные число. Возможно, вы бы также допустили «0,4», то есть выражения формы (x), которые оценивают правильное число.

Это именно то, что вы бы (неявно) делали, если бы оценивали задачу вручную - вы бы искали за ответ, который является правильным, но который также попадает в приемлемый класс.

0
ответ дан 7 December 2019 в 05:30
поделиться

Обычный способ сделать это в программном обеспечении для оценки математики - разрешить установщику вопросов указывать выражения / строки, которые недопустимы в правильном ответе.

Если вас интересует существующее программное обеспечение, есть Stack с открытым исходным кодом http://www.stack.bham.ac.uk/ (или различные коммерческие варианты, такие как MapleTA). Я подозреваю, что с большинством проблем, с которыми вы столкнетесь, также сталкивался Stack, поэтому, даже если вы не хотите его использовать, было бы полезно посмотреть, как он подходит к делу.

0
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: