Problem Set 2: Отличный вид!

Objectives

  • Показать, насколько хорошо вы освоили алгоритмическое мышление и работу робота Карла.
  • Научиться систематически формулировать каркас и логику программы, саму программу и комментарии к ней.
  • Освоиться в системе контроля версий git.

Git

Если вы еще этого не сделали, ознакомьтесь с системой Git, благодаря которой будет осуществляться сдача вашего текущего (позднее, и других) задания. В вашем распоряжении короткая лабораторная работа, в рамках которой вы сможете настроить систему Git: Version Control (RU).

Problem

Карл находится в помещении с несколькими окнами в нём. Через каждое окно в помещение проникает свет, интенсивность которого определяется числом, заключенном в этом окне. Помогите Карлу найти окно, через которое проникает больше всего света.

Создайте программу для решения приведённой задачи, при этом не забывайте: использовать переменные не разрешено. Задание сдайте на git до 05.11.2018. Подробный процесс сдачи описан ниже.

При сдаче не забудьте, что вам следует указать файл карты ps2.kw в функции turnOn().

Начальная позиция

Карл может находится на любом месте в помещении.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (5, 4)   WEST      999        0
ST.+-----------------------------------+
 6 | .   5   .   .   7   .   1   .   . |
   |   +   +-------+   +---+   +       |
 5 | . | .   .   .   .   .   . | .   . |
   |   |                       +---+   |
 4 | . | .   .   .   <   .   .   . | . |
   |   +                           +   |
 3 | 8   .   .   .   .   .   .   .   2 |
   |   +                   +-------+   |
 2 | . | .   .   .   .   . | .   .   . |
   |   +---+   +-------+   +           |
 1 | .   .   7   .   .   4   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

Конечная позиция

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

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (2, 3)   WEST      ???        0
ST.+-----------------------------------+
 6 | .   5   .   .   7   .   1   .   . |
   |   +   +-------+   +---+   +       |
 5 | . | .   .   .   .   .   . | .   . |
   |   |                       +---+   |
 4 | . | .   .   .   .   .   .   . | . |
   |   +                           +   |
 3 | 8   <   .   .   .   .   .   .   2 |
   |   +                   +-------+   |
 2 | . | .   .   .   .   . | .   .   . |
   |   +---+   +-------+   +           |
 1 | .   .   7   .   .   4   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

Minimal Requirements to Succeed

  • Проект должен быть сдан на git по адресу git.kpi.fei.tuke.sk (см. ниже).
  • Во время компиляции любые ошибки недопустимы. Сборка проекта будет осуществляться компилятором gcc со следующими параметрами:
gcc -std=c11 -Werror -Wall -lkarel -lcurses
  • В конечном решении не могут использоваться переменные.
  • Сдавая код, не забудьте указать корректный файл карты ps2.kw в turnOn().

Project Submission

Имплементацию задания сдайте до 05.11.2018. Последний тесты пройдут в полночь.

Задание сдаётся в системе котороля версий Git на сервере git.kpi.fei.tuke.sk.

Название вашего проекта в репозитории должно быть в формате: zap-2018.

Папки и файлы в проекте должны иметь соответствующую структуру:

.
├── ps2
│   └── ps2.c
└── README

У каждого из файлов своё значение:

  • README или же README.md - файл, в котором будет указана группа, которую вы посещаете:
GROUP : C1
  • /ps2/ps2.c - Код программы.

Warning

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

Comment

Если в прокте будут находиться сторонние файлы, это не будет считаться ошибкой.

Warning

Имена файлов, каталогов, также содержание README или же README.md чувствительны к регистру

Comment

Имя файла с номером задания может быть README или README.md. При этом в одном каталоге может находиться только один из них!

Assessment and Testing

Задание оценивается max. 10 баллами. Количество баллов, которые вы получите будет обусловлено результатами тестов, которые будет выполнены над вашим заданием. Будут проверяться:

  • Иерархия файлов (все ли обязательные файлы находятся в проекте).
  • Работоспособность вашей имплементации.

Проект будет собран с помощью компилятора gcc со следующими параметрами:

gcc -std=c11 -Werror -Wall -lkarel -lcurses

Ошибкой будет считаться:

  • Использование переменных.
  • Появление ошибок во время компиляции (любой warning интерпретируется как ошибка).
  • Любой failed test.

Тесты будут запускаться каждые 3 часа, а именно: 0300, 0600, 0900, 1200, 1500, 1800, 2100 и 2400.

Код будет испытан на оригинальность. Потому при выполнении заданий придерживайтесь этического кодекса! Выявление плагиата повлечет за собой исключение с предмета!

Additional Resources

  1. Karl Language Reference
  2. Version Control (RU)
  3. Here you can find the original library of Karel the Robot, including the library installation instructions