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

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

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

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

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

cd ./my-redis

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

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

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

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

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

go / ЛОКАЛЬНО

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

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

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

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