Skip to content

Instantly share code, notes, and snippets.

@ilyachase
Last active August 20, 2018 06:03
Show Gist options
  • Save ilyachase/c454271ca3c7ecc111b47213289b48a0 to your computer and use it in GitHub Desktop.
Save ilyachase/c454271ca3c7ecc111b47213289b48a0 to your computer and use it in GitHub Desktop.
Test task 1
  • В файле ./people.csv хранится информация о пользователях в CSV формате. В первом поле содержится id пользователя (целое без знака), во втором его имя (строка текста). Пример строки в файле: 1;Ivan Pupkin

  • Есть папка ./texts, в которой хранятся тексты в расширении .txt, связанные с пользователями. Имена файлов имеют формат id-n.txt, где id - идентификатор пользователя из файла csv, а n - порядковый номер файла, дополненный нулями слева до 3 символов (например, для пользователя с id=1 в папке может быть два файла: 1-001.txt, 1-002.txt)

Требуется написать утилиту для обработки текстов пользователей, в которую при ее вызове с командной строки можно передавать два параметра:

  • Тип разделителя для CSV файлов (текстовая строка без кавычек)
    • comma для запятой
    • semicolon для точки с запятой
  • Тип задачи, которую требуется выполнить над текстами пользователей (текстовая строка без кавычек)
    • countAverageLineCount - для каждого пользователя посчитать среднее количество строк в его текстовых файлах и вывести на экран вместе с именем пользователя.
    • replaceDates - поместить тексты пользователей в папку ./output_texts, заменив в каждом тексте даты в формате dd/mm/yy на даты в формате mm-dd-yyyy. Вывести на экран количество совершенных для каждого пользователя замен вместе с именем пользователя.

Пользователь может вызвать утилиту, например, так: php user_text_util.php comma countAverageLineCount

Утилита должна быть реализована готовой к работе в production, активной доработке и развитию. В остальном ограничений нет. Можно использовать произвольное количество файлов для помещения в них кода или любой PHP фреймворк, если вам так удобнее.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment