Проектная лаборатория
Собственный Shell
Этап 44 · Программируемое дополнение
Наибольший общий префикс
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы будете дополнять ввод до наибольшего общего префикса (LCP), если он есть у нескольких вариантов.
Дополнение по наибольшему общему префиксу
Когда скрипт дополнения возвращает несколько вариантов, нужно обработать два случая:
- Если их общий префикс длиннее текущего ввода, дополните ввод до LCP.
- Иначе вызовите звуковой сигнал при первом нажатии Tab, а при следующих нажатиях выведите совпадения (как на предыдущих этапах).
Например, если скрипт возвращает checkout и cherry-pick, а пользователь ввёл c:
$ git c<TAB>
$ git cheОба варианта начинаются с che, поэтому оболочка дополняет ввод до che и ждёт дальнейшего ввода. Без звукового сигнала и без списка вариантов.
Проверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shСистема зарегистрирует скрипт дополнения, возвращающий checkout и cherry-pick:
$ complete -C /path/to/completer_script git
$ git c<TAB>
$ git che # LCP of checkout and cherry-pick
$ git chec<TAB>
$ git checkout # only one match now, completes fully with trailing spaceТестирующая система проверит, что:
- Первое нажатие TAB дополняет ввод до наибольшего общего префикса, если он существует.
- Когда остаётся только один вариант, TAB дополняет слово полностью с пробелом в конце.
- Если LCP расширяет текущий ввод, звуковой сигнал не подаётся.
Примечания
- LCP вычисляется по вариантам, возвращённым скриптом дополнения, а не по жёстко заданному списку.
- Если LCP равен уже введённому тексту (новых символов для добавления нет), обрабатывайте это как отсутствие общего префикса: подайте звуковой сигнал, а при следующем TAB покажите варианты.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go2. Откройте папку в IDE
cd ./my-shellРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage xz3Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.