Твое задание Для выполнения задачи вам нужно будет создать реализацию книги заказов. Он будет проверяться на правильность следующим образом: Изначально у вас пустая книга заказов. Затем к книге применяются обновления, и книга должна отвечать на запросы, как описано в разделе «Формат входных / выходных данных» ниже. Требования к задаче Создайте исполняемый файл .jar . Вы можете использовать версию Java до 15 включительно . Имейте в виду, что если вы используете любую версию Java старше 15, некоторые классы, которые были включены в JRE в предыдущих версиях (например, javafx ), недоступны в JRE 15 . В этом случае решение завершится ошибкой за исключением первого тестового примера. Прочтите входные данные из файла с именем input.txt, который будет расположен в текущем рабочем каталоге. Пожалуйста, обращайтесь к файлу по имени, например, «input.txt», а не «/home/user/input.txt», чтобы он был автоматически преобразован в текущий рабочий каталог. В результате выполнения ваш файл .jar должен создать файл, содержащий выходные данные, с именем output.txt в той же папке (рабочем каталоге). Производительность вашего решения имеет значение! Обратите внимание, что предел памяти для тестов установлен на 128 МБ ( -Xmx128M ). Файл решения .jar должен содержать исходный код. После того, как вы решите задачу, отправьте ее через форму в разделе ниже (пожалуйста, не публикуйте ее где-либо еще). Ваша заявка будет автоматически проверена, поэтому необходимо строго соблюдать формат входных / выходных данных. Если ваш файл .jar не является исполняемым или не содержит исходного кода, он не будет принят. Мы ценим кандидатов, которые пытаются обдумать решение перед тем, как отправить его как готовое - пожалуйста, не присылайте много похожих решений со случайными изменениями. Входной файл Каждая строка в файле может быть одной из следующих: Обновления книги лимитных заявок в следующем формате: u, <цена>, <размер>, ставка - установите размер ставки <цена> на <размер> (доли общего размера теперь предлагаются по цене) u, <цена>, <размер>, ask - установить размер запроса с <price> на <size> Запросы в следующем формате: q, best_bid - распечатать лучшую цену и размер ставки q, best_ask - вывести лучшую цену предложения и размер q, size, <price> - размер печати по указанной цене (бид, аск или спред). И рыночные ордера в следующем формате: o, buy, <size> - удаляет <size> акции из асков, самые дешевые. o, sell, <size> - убирает из ставок <size> акции, самые дорогие В случае заказа на покупку это похоже на выход на рынок (при условии, что вы хотите купить там <размер> одинаковых предметов, и что все экземпляры имеют одинаковое качество, поэтому цена является единственным фактором) - вы покупаете <размер> единиц по самой низкой доступной цене. Запросы, рыночные ордера и обновления книги лимитных ордеров выполняются в произвольной последовательности. Каждая строка в файле является одной из трех и заканчивается символом новой строки UNIX - \ n . Диапазон вводимых значений: Цена - 1 ... 10 9 Размер - 0 ... 10 8 Пример входного файла: u,9,1,bid u,11,5,ask q,best_bid u,10,2,bid q,best_bid o,sell,1 q,size,10 u,9,0,bid u,11,0,ask Выходной файл Пример выходного файла (для этого входного файла): 9,1 10,2 1 Формат входных / выходных данных Как проверить свое решение Перед отправкой раствора рекомендуется проверить, как он работает на вашей стороне. Пожалуйста, следуйте инструкциям ниже: В той же папке, где находится your_solution.jar (имя файла jar не имеет значения), создайте другую папку, например, data (опять же, имя не имеет значения) Создайте файл input.txt с содержимым, описанным в разделе Формат входных / выходных данных. Поместите input.txt в папку данных В папке данных откройте командную строку. Запустите java -Xmx128M -jar ../your_solution.jar . Если ваше решение работает правильно, в папке данных должен появиться файл output.txt с содержимым, идентичным тому, что показано в разделе Формат данных ввода / вывода . Дополнительная информация Если ваше решение пройдет тесты, будет измерено время его выполнения. Думаешь, ты сможешь сделать это лучше? Ну ничто не мешает прислать очередное решение =) Обратите внимание, что время выполнения может колебаться в диапазоне + - 300 ... 400 мс для одного и того же решения. У нас также есть таблица лидеров , но она в основном создана для развлечения, и ваш рейтинг не влияет напрямую на процесс собеседования или ваши шансы получить работу. Там появится ваше решение с наивысшим баллом. Вам нужна дополнительная информация для выполнения этой задачи? Если да - не стесняйтесь спрашивать, пишите: hr@bookmap.com Попытался сделать - это тестовое задание у меня не получилось, кто сталкивался с таким тестовым заданием, и у кого получилось а у кого не получилось, буду признателен если кто-то подскажет как сделать такое тестовое задание.