Проверка нескольких файлов

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

Встраивание сравнения в схему

Один из подходов заключается в создании проверяющей схемы, которая непосредственно выполняет сравнение. В таком случае мы создаём дополнительную схему в проверяющем файле, содержащем схему с решением. Во всю нашу проверяющую схему мы включаем и подсхему из adder-master.circ, и подсхему из схемы с решением. Мы соединяем их так, что получается только один выход, на котором 1, пока две подсхемы дают на выходе согласованные значения.

Теперь мы можем просто запускать Logisim, подставляя каждый проверяемый файл. Для каждого правильного решения вывод будет состоять только из 1.

Использование перенаправления и сценариев оболочки

Если вы ладите с командной строкой, вы можете создать свой собственный скрипт для решения этой задачи. Здесь мы будем использовать перенаправление (оператор >), чтобы сохранять вывод каждой схемы в файл. Например, мы могли бы ввести следующие две команды чтобы получить вывод эталонной схемы и проверяемой схемы.

java -jar logisim-filename.jar adder-test.circ -tty table > output-master.txt
java -jar logisim-filename.jar adder-test.circ -tty table -sub adder-master.circ adder-query.circ > output-query.txt

Теперь мы создали два разных файла. Мы можем сравнить два файла с помощью программы, написанной для таких целей. Под Linux или MacOS X вы можете использовать утилиты командной строки cmp или diff. Под Windows вы можете использовать WinMerge.

Для обработки нескольких проверяемых файлов вы можете написать простую программу типа сценария оболочки для поочерёдного прохода по файлам и их сравнения. Вот как бы я сделал это под Linux в bash:

RUN_TEST="java -jar logisim-filename.jar adder-test.circ -tty table"
${RUN_TEST} > output-master.txt
for QUERY_FILE in adder-query*.circ
do
  if ${RUN_TEST} -sub adder-master.circ ${QUERY_FILE} | cmp -s output-master.txt
  then
    echo "${QUERY_FILE} OK"
  else
    echo "${QUERY_FILE} different"
  fi
done

Далее: Руководство пользователя.