mirror of
https://github.com/orionprotocol/orion-interview.git
synced 2025-12-06 03:26:54 +03:00
Create task.MD
This commit is contained in:
59
exchange/task.MD
Normal file
59
exchange/task.MD
Normal 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-тестов
|
||||
Reference in New Issue
Block a user