Проектная лаборатория

Собственный Grep

0 / 33этапов пройдено

Этап 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 go

2. Откройте папку в IDE

cd ./my-grep

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage fz7

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста