До занятий 21 и 22 декабря требуется выполнить это задание как можно полнее. Как бы мало вы не успели сделать - отправьте сделанное до начала следующего занятия.

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

Если не выходит что-то с установкой ПО - спросите у друзей или пишите мне (максимально подробно, желательно со скриншотами).

Жесткий дедлайн: 05 января (четверг) Раньше отправляете - лучше оценка.

Предполагается, что весь софт из задания 0 был успешно поставлен.

Обратите пожалуйста внимание на инструкцию по генерации патча - она изменилась.

Обновления:

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

Правила обновления состояния автомата:

  • В каждой клетке состояние - число от 0 до n-1
  • Если в клетке состояние X и вокруг нее среди восьми соседей не было ни одного со значением (X+1)%n (где a%b = a по модулю b), то состояние клетки остается X
  • Если в клетке состояние X и вокруг нее среди восьми соседей был хотя бы один со значением (X+1)%n, то состояние клетки становится (X+1)%n

Настройка окружения, Android Studio:

  1. Скачать Android Studio: https://developer.android.com/studio/index.html (Includes Android SDK (recommended), 1,674 MB)
  2. Установить, оставив все по дефолту (галочки стоят на всех трех пакетах)
  3. Запустить Android Studio
  4. “I do not have a previous version …” -> Ok
  5. В случае 239 может потребоваться настроить прокси: host name: proxy.sch239.net + port number: 3128 -> Ok
  6. “Standard” -> Next
  7. Галку на Android Virtual Device (если хочется эмулятор) -> Next
  8. Finish, ждать пока грузится 600 Мб

Задание “Клеточный автомат:

  1. Запустить Android Studio
  2. Check out project from Version Control->Git (НЕ github)
  3. Git repository URL: https://github.com/PolarNick239/AndroidBenchmarks
  4. Если пишет красным “The parent path C:...\StudioProjects must exist” - создайте такую папку, либо укажите другую Parent Directory
  5. Нажать Clone
  6. Would you like to create a Studio project for the sources you have been checked …? ИЛИ You have checked out … Would you like to open it? -> НАЖАТЬ NO
  7. Import project - указываете папку, в которую вы выкачали исходники
  8. Закрыть окошко Tip of the day -> Close

Android NDK:

  1. Скачать Android NDK:
  2. Либо File->Project Structure->SDK Location-> снизу нажать на “Download” Android NDK
  3. Либо если этого пункта не видно, то Tools->Android->SDK manager->SDK tools->Отметить NDK->Ok
  4. Либо руками скачать отсюда https://developer.android.com/ndk/downloads/index.html а затем в Project Structure->SDK Location-> снизу указать путь на этот распакованный архив

Уровни сложности:

  1. Easy (если обычно вас напрягает информатика, или сделать Medium вы не успеваете, максимальная оценка - 3, есть маленький шанс на 4)
  2. Medium (вариант по умолчанию. Оценка 4 - если все хорошо но без многопоточности. Оценка 5 - если с многопоточностью)
  3. Nightmare (на самом деле это Medium, но еще одна сложная технически задачка добавлена, поэтому когда будет сделан Medium - можно попробовать Nightmare, скопировав уже сделанную часть)

Настройка проекта:

  1. Снизу слева нажать на “Unregistered VCS root detected” -> нажать синюю надпись Add Root
  2. Справа снизу нажать на “Git: master” -> origin/medium -> checkout as new local branch -> Ok
  3. Снизу нажав на TODO можно увидеть перечень заданий

Чтобы запускать:

  1. Run->Edit configurations
  2. Зеленый плюс->Android App
  3. Module: выбрать main (единственный вариант)
  4. Target: Emulator (тут можно указать USB, если захочется проверить на своем телефоне)
  5. Prefer Android Virtual Device: выбрать “Nexus 5x …” (единственный вариант)
  6. Ok
  7. Теперь можно запускать сверху зеленым треугольником (как кнопка Play в плеерах)

Процесс выполнения задания:

  1. Выполнить все TODO указанные в коде (так же их можно посмотреть внизу, нажав на TODO или Alt+6)
  2. Прогнать тесты, найти и поправить ошибки если тесты падают
  3. Сгенерировать патч, отправить мне на почту

Чтобы прогнать тесты:

  1. Откройте файл SimpleUpdaterTest или MultithreadedUpdaterTest (в зависимости от того, какую реализацию вы хотите проверить) - это удобно делать через Ctrl+Shift+N и затем начать печатать название файла
  2. Нажмите Ctrl+Shift+F10, что запустит все тесты из файла UpdaterTest для выбранной реализации
  3. Если все тесты зеленые (прошли) - скорее-всего у вас нет багов
  4. Если какой-то тест красный - у вас есть ошибка, чтобы ее исследовать - откройте тест двойным кликом и поймите, какой случай в нем проверяется (можете запустить тест под отладкой)

Потенциальные проблемы:

Проблема Failed to find CMake

Нажмите Install CMake and sync project