Проектная лаборатория
Собственный Grep
Этап 09 · Основные этапы
Одно или несколько повторений
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите квантификатор «один или более раз» (+).
Квантификаторы
Квантификаторы — специальные операторы, задающие, сколько раз должен совпасть предшествующий элемент.
Распространённые квантификаторы:
+— один или более раз;?— ноль или один раз;*— ноль или более раз.
Квантификатор «один или более раз» (+)
Квантификатор + требует одного или нескольких совпадений предшествующего символа или класса символов. Это жадный квантификатор: он пытается сопоставить элемент максимально возможное число раз.
Например:
a+находит совпадение в"apple"(одна"a").a+находит совпадение в"SaaS"(две последовательные"a").a+не находит совпадения в"dog"(нет"a").ca+tsнаходит совпадение в"cats"(одна"a").ca+tsнаходит совпадение в"caats"(две"a").ca+tsне находит совпадения в"cts"(нужна хотя бы одна"a").\d+находит совпадение в"123"(три цифры).
Проверки
Тестирующая система запустит программу так:
$ echo -n "caats" | ./your_program.sh -E "ca+ts"Программа должна:
- Завершиться с кодом
0, если входная строка соответствует заданному шаблону. - Завершиться с кодом
1в противном случае.
Примечания
- Квантификатор
+относится только к непосредственно предшествующему элементу. Например, вca+tsповторяется только"a", а не всё"ca". - Вероятно, потребуется изменить последовательный поиск, чтобы учитывать повторения и жадность перед сопоставлением остальной части шаблона.
Проверка в вашей 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 fz7Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.