codeleventh / cft

Тестовое

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cft

Постановка задачи

Написать программу сортировки слиянием нескольких файлов.
Входные файлы содержат данные одного из двух видов: целые числа или строки. Данные записаны в столбик (каждая строка файла – новый элемент). Строки могут содержать любые не пробельные символы.

Результатом работы программы должен являться новый файл с объединенным содержимым входных файлов, отсортированным по возрастанию или убыванию путем сортировки слиянием. Если содержимое исходных файлов не позволяет произвести сортировку слиянием (например, нарушен порядок сортировки), производится частичная сортировка.

Выходной файл должен содержать отсортированные данные даже в случае ошибок, однако возможна потеря ошибочных данных.

Все возможные виды ошибок должны быть обработаны. Программа не должна «падать». Если после ошибки продолжить выполнение невозможно, программа должна сообщить об этом пользователю с указанием причины неудачи.

Для реализации можно использовать любой язык программирования из списка: Java, C, C++, C#, Python, Ruby, Scala, Pascal, PHP, Basic (можно предложить свой вариант).

Решение принимается в виде исходного кода проекта.
Параметры программы задаются при запуске через аргументы командной строки:

  1. режим сортировки (-a или -d), необязательный, по умолчанию сортируем по возрастанию;
  2. тип данных (-s или -i), обязательный;
  3. имя выходного файла, обязательное;
  4. остальные параметры – имена входных файлов, не менее одного.

Примеры запуска из командной строки для Windows:
sort-it.exe -i -a out.txt in.txt (для целых чисел по возрастанию)
sort-it.exe -s out.txt in1.txt in2.txt in3.txt (для строк по возрастанию)
sort-it.exe -d -s out.txt in1.txt in2.txt (для строк по убыванию)
К решению должна прилагаться инструкция по запуску.

Сборка и запуск

Потребуется установленный и настроенный stack (quick start).

Для сборки проекта достаточно сделать stack build, после чего в поддиректориях .stack-work появится исполняемый файл (можно найти поиском). Также собранный проект можно запускать из-под stack: stack exec cft-exe -- -a -s out.txt in1.txt
В релизах репозитория лежит уже готовый бинарник.

NB: реализация сортировки находится в файле Lib.hs. Она не принадлежит чьей-то готовой библиотеке или средствам языка.

About

Тестовое

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Haskell 100.0%