Тестовое задание на вакансию lua-разработчика

Реализуйте один из предложенных вариантов на ваш выбор.


Вариант 1

Реализуйте оба задания.

Задание 1

Реализуйте на языке Луа игру «крестики-нолики» 3х3 для двух человека (в режиме Hot Seat) в консоли.

Плюсами будут:
  • реализация игры с искусственным интеллектом,
  • реализация нескольких (как минимум — двух) уровней сложности искусственного интеллекта.

При желании задание можно выполнить на другом языке (но Луа — предпочтительнее).

Задание 2

Реализуйте на языке Lua функцию сериализации таблицы в строку, содержащую код на Lua (сериализовать nil, boolean, number, string).

Плюсами будут:
  • поддержка вложенных таблиц в качестве ключей и значений,
  • поддержка рекурсивных таблиц (таблица содержит в себе ссылку на саму себя).


Вариант 2

Реализовать на языке Lua пример «электронный магазин» (e-shop).

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

Пользовательский интерфейс «магазина» не должен содержать никакой избыточной вёрстки и «веб-дизайна» — только необходимый минимум. Javascript также не должен использоваться.

Требуемый функционал примера:

  1. Регистрация нового пользователя: e_shop?register

    Выдаёт форму для ввода логина, пароля и подтверждения пароля. Содержит ссылку на страницу авторизации. При клике на кнопку «Зарегистрироваться» создаётся учётная запись и пользователю выдаётся сообщение: «Вы успешно зарегистрировались как пользователь Х» либо «Пользователь Х уже зарегистрирован» в случае ошибки.

    Список зарегистрированных пользователей хранится на сервере в отдельном текстовом файле с ограниченным максимальным размером (кольцевой список).

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

  2. Авторизация: e_shop?login

    Форма ввода логина и пароля. Ссылка на страницу регистрации. При нажатии на кнопку «Войти» пользователь авторизуется в системе и ему выдаётся сообщение «Вы вошли в систему как пользователь Х» и ссылка на страницу списка товаров, либо, при ошибке, «Пользователь Х не существует» или «Неправильный пароль для пользователя Х».

    Авторизация хранится в куках. Если пользователь авторизован на момент открытия этой страницы, он перенаправляется на список товаров.

  3. Получение списка товаров: e_shop?store

    Выдаёт таблицу с несколькими фиктивными товарами (задаются в коде), которые пользователь может купить, заполнив количества в полях input и кликнув на кнопку «Купить».

    Если пользователь не авторизован, он не может ничего купить (но может посмотреть список товаров). В этом случае на странице есть ссылка на страницу авторизации. Иначе — ссылка «Выход», снимающая cookie и показывающая ту же страницу авторизации (с сообщением «Вы вышли из системы»).

    При нажатии на кнопку «Купить» пользователю выдаётся сообщение вида «Вы купили A (5 шт), B (4 шт), C (3 шт) и D (88 шт)».


Результаты присылайте на jobs@logiceditor.com.