Files
orion-interview/exchange/task.MD
2022-06-20 18:23:03 +03:00

60 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Описание задачи
Напишите программу для простейшего матчинга заявок на упрощенной бирже. На бирже торгуется четыре ценных бумаги ("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-тестов