Задание 1. Андроиды и электроовцы с клеточными автоматами
До занятий 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:
- Скачать Android Studio: https://developer.android.com/studio/index.html (Includes Android SDK (recommended), 1,674 MB)
- Установить, оставив все по дефолту (галочки стоят на всех трех пакетах)
- Запустить Android Studio
- “I do not have a previous version …” -> Ok
- В случае 239 может потребоваться настроить прокси: host name: proxy.sch239.net + port number: 3128 -> Ok
- “Standard” -> Next
- Галку на Android Virtual Device (если хочется эмулятор) -> Next
- Finish, ждать пока грузится 600 Мб
Задание “Клеточный автомат:
- Запустить Android Studio
- Check out project from Version Control->Git (НЕ github)
- Git repository URL: https://github.com/PolarNick239/AndroidBenchmarks
- Если пишет красным “The parent path C:...\StudioProjects must exist” - создайте такую папку, либо укажите другую Parent Directory
- Нажать Clone
- 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
- Import project - указываете папку, в которую вы выкачали исходники
- Закрыть окошко Tip of the day -> Close
Android NDK:
- Скачать Android NDK:
- Либо File->Project Structure->SDK Location-> снизу нажать на “Download” Android NDK
- Либо если этого пункта не видно, то Tools->Android->SDK manager->SDK tools->Отметить NDK->Ok
- Либо руками скачать отсюда https://developer.android.com/ndk/downloads/index.html а затем в Project Structure->SDK Location-> снизу указать путь на этот распакованный архив
Уровни сложности:
- Easy (если обычно вас напрягает информатика, или сделать Medium вы не успеваете, максимальная оценка - 3, есть маленький шанс на 4)
- Medium (вариант по умолчанию. Оценка 4 - если все хорошо но без многопоточности. Оценка 5 - если с многопоточностью)
- Nightmare (на самом деле это Medium, но еще одна сложная технически задачка добавлена, поэтому когда будет сделан Medium - можно попробовать Nightmare, скопировав уже сделанную часть)
Настройка проекта:
- Снизу слева нажать на “Unregistered VCS root detected” -> нажать синюю надпись Add Root
- Справа снизу нажать на “Git: master” -> origin/medium -> checkout as new local branch -> Ok
- Снизу нажав на TODO можно увидеть перечень заданий
Чтобы запускать:
- Run->Edit configurations
- Зеленый плюс->Android App
- Module: выбрать main (единственный вариант)
- Target: Emulator (тут можно указать USB, если захочется проверить на своем телефоне)
- Prefer Android Virtual Device: выбрать “Nexus 5x …” (единственный вариант)
- Ok
- Теперь можно запускать сверху зеленым треугольником (как кнопка Play в плеерах)
Процесс выполнения задания:
- Выполнить все TODO указанные в коде (так же их можно посмотреть внизу, нажав на TODO или
Alt+6
) - Прогнать тесты, найти и поправить ошибки если тесты падают
- Сгенерировать патч, отправить мне на почту
Чтобы прогнать тесты:
- Откройте файл SimpleUpdaterTest или MultithreadedUpdaterTest (в зависимости от того, какую реализацию вы хотите проверить) - это удобно делать через
Ctrl+Shift+N
и затем начать печатать название файла - Нажмите
Ctrl+Shift+F10
, что запустит все тесты из файла UpdaterTest для выбранной реализации - Если все тесты зеленые (прошли) - скорее-всего у вас нет багов
- Если какой-то тест красный - у вас есть ошибка, чтобы ее исследовать - откройте тест двойным кликом и поймите, какой случай в нем проверяется (можете запустить тест под отладкой)
Потенциальные проблемы:
Проблема
Failed to find CMake
Нажмите Install CMake and sync project