Create task.MD

This commit is contained in:
Boris Vanin
2022-06-20 18:23:03 +03:00
committed by GitHub
parent 0dc456726f
commit 5745009ec6

59
exchange/task.MD Normal file
View File

@@ -0,0 +1,59 @@
# Описание задачи
Напишите программу для простейшего матчинга заявок на упрощенной бирже. На бирже торгуется четыре ценных бумаги ("A", "B", "C" и "D"). Базовая валюта биржи - доллар ("$").
Входные данные для программы содержатся в двух файлах. Первый файл `clients.txt` содержит список клиентов биржи с указанием их исходных балансов по торгующимся ценным бумагам и доллару.
Второй файл, `orders.txt`, это список заявок от клиентов в хронологическом порядке.
Результатом работы программы является файл `result.txt` аналогичный по структуре файлу `clients.txt` и содержащий состояние балансов всех клиетов после обработки всех заявок.
## Описание форматов файлов
Структура файлов предельно проста. Каждая строка тесктового файла содержит одну запись. Поля записи отделяются друг от друга с помощью символа табуляции (\t).
Имена клиентов, названия ценных бумаг - строки, состоящие из буквенных и цифровых символов ASCII без разделителей. Числовые значения представлены целыми числами.
### Файл `clients.txt`
Файл списка клиетов имеет следующие поля:
* Имя клиента
* Баланс клиента по долларам
* Баланс клиента по ценной бумаге "A" в штуках
* Баланс по ценной бумаге "B"
* Баланс по ценной бумаге "C"
* Баланс по ценной бумаге "D"
Пример нескольких строк файла:
```
C1 1000 10 5 15 0
C2 2000 3 35 40 10
```
### Файл `orders.txt`
Файл списка заявок имеет формат:
* Имя клиента выставившего заявку
* Символ операции: "s" - продажа или "b" - покупка.
* Наименование ценной бумаги
* Цена заявки (целое число за одну штуку ценной бумаги)
* Количество продаваемых или покупаемых ценных бумаг
Пример нескольких строк файла:
```
C1 b A 7 12
C2 s A 8 10
```
## Замечания
1. Частичное сопоставление заявок реализовывать не обязательно. Для упрощения можно сопоставлять заявки только по полному совпадению цены и количества.
1. Не нужно обрабатывать ситуации продажи и покупки самому себе.
1. Состояние счетов клиентов можно обрабатывать без транзакций.
1. Для простоты можно не проверять отрицательные балансы клиентов по ценным бумагам и долларам.
## Ожидаемые результаты
* Основной результат - файл конечного состояния счетов клиентов биржи после обработки предоставленных данных
* Исходный код проекта на Github
* Набор unit-тестов