Skip to content

Instantly share code, notes, and snippets.

@sofakingworld
Last active January 26, 2020 21:28
Show Gist options
  • Save sofakingworld/81822c30218bd2cec51c479744da2b70 to your computer and use it in GitHub Desktop.
Save sofakingworld/81822c30218bd2cec51c479744da2b70 to your computer and use it in GitHub Desktop.
Задачки на закрепление знаний по Elixir и OTP

Простое

На сайте https://www.cbr-xml-daily.ru/ можно получить различные курсы валют. Необходимо написать модуль, который позволит переводить деньги из одной валюты в любую другую. Например: 1 турецкая лира = 0.17 долларов США.

Среднее

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

Сложное

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

Если все места заняты, то человека просят подождать, пока не освободится какое-либо место.

Заняв место в зале, клиент зовёт официанта, уточняет у него меню и заказывает блюда.

Официант оформляет заказ и передает позиции заказа на кухню. Повара видят список заказок, если заказ есть - свободный повар готовит блюдо. По готовности блюдо передаётся на конвеер, откуда официанты забирают еду и уносят клиентам.

С помощью GenServer, GenStage и Poolboy необходимо реализовать связанную систему, которая реализует данные процессы.

Будет плюсом: сбор статистики, по какой причине уходили клиенты.

Условия и ограничения:

  • Мест в ресторане - 300
  • Поваров - 10
  • Официантов - 5
  • Меню:
  1. Бургер (готовка 5 минут)
  2. Кофе (готовка 1 минута)
  3. Салат (готовка 3 минуты)
  4. Стейк ( готовка 10 минут)
  • Клиент ждёт у входа 10 минут, иначе уходит
  • Клиент ждёт официанта 10 минут, иначе уходит из ресторана
  • Клиент ждет еду (хотя бы одно блюдо) 30 минут, нет еды - клиент уходит
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment