Skip to content

MaletyPerun/testtask-baltinfocom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на поиск совпадений в текстовом файле.


Стек: Java 17, Maven 3.0.2.

В программе применены Stream API, регулярное выражение, параллельный поток (счетчик времени). При разработке и тестировании использовались две ОС:

MacOS: macOS Big Sur, версия 11.7.2 Intel Core i5 1,3 GHz RAM 4 Gb

Windows: ОС X (Home edition) intel core i5-7200U CPU 2.50 GHz, 2.70 GHz RAM 8GB 64-x


Техническое задание:

С помощью Java: а) Считать файл (https://github.com/PeacockTeam/new-job/releases/download/v1.0/lng-4.txt.gz), состоящий из строк вида

A1;B1;C1

A2;B2;C2

A3;B3

...

в строке может быть неограниченное число элементов

б) Найти множество уникальных строчек и разбить его на непересекающиеся группы по следующему критерию:

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

Например, строчки

111;123;222

200;123;100

300;;100

все принадлежат одной группе, так как первые две строчки имеют одинаковое значение 123 во второй колонке, а две последние одинаковое значение 100 в третьей колонке

строки

100;200;300

200;300;100

не должны быть в одной группе, так как значение 200 находится в разных колонках

в) Вывести полученные группы в файл в следующем формате:

Группа 1

строчка1

строчка2

строчка3

...

Группа 2

строчка1

строчка2

строчка3

В начале вывода указать получившиееся число групп с более чем одним элементом.

Сверху расположить группы с наибольшим числом элементов.

Приемлимое время работы - до 30 секунд.

После выполнения задания необходимо отправить количество полученных групп с более чем одним элементом и время выполнения программы (мы не проверяем код если ответ неверный).

  • Строки вида "8383"200000741652251" "79855053897"83100000580443402";"200000133000191" являются некорректными и должны пропускаться

** Если в группе две одинаковых строки - нужно оставить одну

Проект должен собираться с помощью maven или gradle в исполняемый jar. В результате должно работать java -jar {название проекта}.jar тестовый-файл.txt

Правильно написанный алгоритм не должен потреблять много памяти (запускать с ограничением по памяти 1Гб (-Xmx1G))


Запуск программы

Для запуска программы необходимо скачать проект, в папке проекта через консоль выполнить команды:

  • для Unix: ./mvnw clean install
  • для Windows: mvnw.cmd clean install
  • далее: java -Xmx1G -jar target/testtask-baltinfocom-1.0-SNAPSHOT.jar текстовый-файл.txt

About

Поиск совпадений в файле

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages