Проектная лаборатория
Собственный Grep
Этап 14 · Обратные ссылки
Несколько обратных ссылок
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку нескольких обратных ссылок.
Несколько обратных ссылок
На предыдущем этапе вы обработали одну обратную ссылку. Теперь расширьте реализацию, чтобы один шаблон поддерживал несколько захваченных групп и обратных ссылок.
Каждая пара скобок создаёт пронумерованную захватывающую группу. На любую из них можно сослаться через \1, \2, \3 и так далее.
Например:
(\d+) (\w+) and \1 \2находит совпадение в"3 red and 3 red".(\d+) (\w+) and \1 \2не находит совпадения в"3 red and 4 red"(3≠4).(\d+) (\w+) and \1 \2не находит совпадения в"3 red and 3 blue"(red≠blue).(cat) and (dog) are \2 and \1находит совпадение в"cat and dog are dog and cat"(обратный порядок).(\w+)-(\w+)-\1-\2находит совпадение в"foo-bar-foo-bar".
Проверки
Тестирующая система запустит программу так:
$ echo -n "3 red squares and 3 red circles" | ./your_program.sh -E "(\d+) (\w+) squares and \1 \2 circles"Программа должна:
- Завершиться с кодом
0, если входная строка соответствует шаблону со всеми обратными ссылками. - Завершиться с кодом
1в противном случае.
Примечания
- Нужно одновременно отслеживать несколько захваченных групп и соответствующий им текст. Можно использовать массив или словарь с номером группы в качестве индекса.
- Каждая обратная ссылка должна точно совпадать с текстом, захваченным её группой, а не с любым текстом, подходящим под шаблон этой группы.
- Обратные ссылки могут идти в любом порядке и использоваться многократно (например,
\1может встретиться в одном шаблоне дважды).
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init grep ./my-grep --language go2. Откройте папку в IDE
cd ./my-grepРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage tg1Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.