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

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

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

Этап 77 · Списки

Получение элементов списка: положительные индексы

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы добавите получение элементов списка командой LRANGE.

Команда LRANGE

Команда LRANGE получает элементы списка по начальному индексу start и конечному индексу stop.

Индекс первого элемента — 0. Граница stop включена: элемент с этим индексом входит в ответ.

Например:

# Create a list with 5 items
> RPUSH list_key "a" "b" "c" "d" "e"
(integer) 5
 
# List first 2 items 
> LRANGE list_key 0 1
1) "a"
2) "b"
 
# List items from index 2 to 4
> LRANGE list_key 2 4
1) "c"
2) "d"
3) "e"

Учитывайте следующие особенности LRANGE:

  • Если списка нет, возвращается пустой массив.
  • Если start больше либо равен длине списка, возвращается пустой массив.
  • Если stop больше либо равен длине списка, индекс stop трактуется как индекс последнего элемента.
  • Если start больше stop, возвращается пустой массив.

Тесты

Тестирующая программа запустит вашу программу так:

./your_program.sh

Затем создаст список с несколькими элементами:

$ redis-cli RPUSH list_key "a" "b" "c" "d" "e"

После этого отправит серию команд LRANGE. В зависимости от случая ожидается массив RESP либо пустой массив (*0\r\n).

Например, тест может отправить:

$ redis-cli LRANGE list_key 0 2
# Expect RESP Encoded Array: ["a", "b", "c"]

Ожидаемый ответ — массив RESP ["a", "b", "c"], который выглядит так:

*3\r\n
$1\r\n
a\r\n
$1\r\n
b\r\n
$1\r\n
c\r\n

Примечания

  • Пока нужно реализовать LRANGE только с неотрицательными индексами. Поддержка LRANGE с отрицательными индексами появится позже.
  • Если списка нет, LRANGE должна возвращать пустой массив RESP (*0\r\n).

Проверка в вашей 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 sf6

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

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

go / ЛОКАЛЬНО

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

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

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

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