Skip to content

kotsaarev/sea-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sea World

Задача

Написать приложение “Морской мир” согласно ниже изложенным спецификациям.

Приложение содержит один экран в портретной ориентации. Смены ориентации экрана не предполагается, соответственно, портретный режим экрана должен быть жестко установлен.

На экране расположена таблица размера 15x10 (высота х ширина) с ячейками равными по размеру между собой, размер таблицы должен задаваться переменными в коде, чтобы можно было быстро поменять размер.

Каждая ячейка может: быть свободна, либо занята одной особью организма какого-либо вида.

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

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

При клике по таблице должен совершаться один такт симуляции мира. В течение одного такта каждая особь совершает один ход (если может). Особи совершают ходы в течение одного такта по очереди, в порядке обхода таблицы.

Правила жизни в “мире”

Для всех организмов:

  • Окрестностью клетки ​ считаются соседние 8 клеток.
  • Все организмы могут перемещаться на одну клетку в пределах окрестности (то есть вверх, вниз, вправо, влево и по диагонали)
  • Есть два вида организмов: пингвины и касатки

Пингвины

Перемещение:

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

Размножение:

  • Если живет 3 хода, то на третий ход пробует произвести потомство
  • Размножение происходит путем создания нового пингвина на произвольном свободном месте в ​ окрестности около пингвина.
  • Если рядом свободных мест нет, то ничего не делает и следующего размножения ждёт ещё 3 хода.

Касатки

Движение:

  • На каждом ходе пытается плавать
  • На каждом ходе проверяет все направления и если встречается пингвин, то перемещается на его место и съедает его.
  • Если рядом нет пингвинов, то двигается так же, как пингвин
  • Есть других касаток нельзя

Размножение:

  • Если живет 8 ходов то на 8-й ход пробует произвести потомство
  • Процесс размножения происходит так же, как у пингвинов. Гибель:
  • Если не съест ни одного пингвина в течение 3 ходов, то умирает (исчезает из мира, оставляя клетку свободной). Начальное состояние: в начальном состоянии мир должен быть заполнен пингвинами на 50% и касатками на 5%.

Прочие требования и примечания

  • Самое важное: внутренняя организация кода, и корректность работы программы. Красоты в UI - второстепенная задача. Падений, разумеется не должно быть. Настоятельно рекомендуется оттестировать написанный код на предмет падений.
  • Картинки для организмов приложены к заданию в архиве
  • Рекомендуется выполнять задание в виде проекта, созданного в xCode
  • Минимальную версию Target можно выбрать не выше iOS 8 (iOS 8+)
  • Необходимо использовать объектно ориентированные техники и шаблоны по мере необходимости. Приветствуется чистый и понятный код
  • Что касается комментариев в коде: по возможности нужно делать понятийно-именованные методы и переменные. Следовательно комментировать может потребоваться только код внутренней неочевидной логики (если таковая вообще будет) либо код вспомогательных методов.
  • Максимальный срок выполнения задания: 7 дней с момента начала работы над заданием. О начале работы нужно уведомить, выслав соответствующее письмо на ​ job@sibext.com​ .
  • Готовое задание нужно выложить в этот репозиторий. Рекомендуется на заливать в репозиторий ненужные и лишние файлы: бинарники, файлы IDE и т.п.. (чтобы не заливать лишнее, пользуйтесь файликом “.gitignore”).
  • Когда задание будет готово и залито в хранилище, нужно сообщить об этом, выслав соответствующее письмо на ​ job@sibext.com​ .

About

Test task for Sibext Ltd.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages