Проектная лаборатория
Собственный Redis
Этап 103 · Битовые карты
Чтение битов как строки
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку GET для ключа, созданного командой SETBIT.
Строки и битовые карты
Поскольку битовые карты являются строками, строковые команды работают с ключами, созданными через SETBIT.
Это два представления одних байтов: SETBIT записывает биты в строку, а GET возвращает эту строку.
Смещение 0 соответствует старшему биту первого байта. Установка бита 1 даёт байт 01000000, то есть ASCII-символ @:
> SETBIT mykey 1 1
(integer) 0
> GET mykey
"@"Проверки
Тестирующая система запустит программу так:
$ ./your_program.shЗатем создаст битовую карту командой SETBIT.
$ redis-cli SETBIT mykey 1 1Далее отправит команду GET для этого ключа.
$ redis-cli GET mykeyОжидаемый ответ — $1\r\n@\r\n, то есть @ в формате bulk string RESP.
Примечания
- Здесь достаточно обработать
GETдля ключа, созданного одним вызовомSETBIT. Увеличение строки при большем смещении рассмотрим позже. GETвозвращает строковое значение ключа, аSETBITзаписывает это значение как байты. Ключи, созданные черезSETBITиSET, имеют общее представление.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init redis ./my-redis --language go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage pk5Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.