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

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

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

Этап 110 · Геопространственные команды

Проверка координат

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

На этом этапе вы добавите проверку широты и долготы, переданных в GEOADD.

Проверка широты и долготы

Значения широты и долготы в команде GEOADD должны находиться в диапазонах согласно EPSG:3857.

  • Допустимая долгота: от -180° до +180°.
    • Обе границы включены: -180° и +180° допустимы.
  • Допустимая широта: от -85.05112878° до +85.05112878°.
    • Обе границы включены: -85.05112878° и +85.05112878° допустимы.
    • Границы отличаются от -/+90° из-за проекции Web Mercator, используемой Redis.

Если хотя бы одно значение выходит за свой диапазон, GEOADD возвращает ошибку. Примеры:

# Invalid latitude
> GEOADD places 180 90 test1
(error) ERR invalid longitude,latitude pair 180.000000,90.000000
 
# Invalid longitude
> GEOADD places 181 0.3 test2
(error) ERR invalid longitude,latitude pair 181.000000,0.300000

Реализуйте проверку координат и возврат сообщений об ошибках, подобных приведённым выше. Проверка допускает вариации формата сообщения: точное совпадение с примерами не требуется.

Проверки

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

$ ./your_program.sh

Затем отправит несколько команд GEOADD.

Для некорректных координат ожидается ошибка. Например:

# Expecting error
$ redis-cli GEOADD location_key 200 100 foo
(error) ERR invalid longitude,latitude pair 200,100

Ответ должен:

  • Быть простой ошибкой RESP, то есть начинаться с - и заканчиваться \r\n.
  • Содержать сообщение, начинающееся с ERR, как стандартные ошибки Redis.
  • Содержать слово "latitude", если некорректна широта.
  • Содержать слово "longitude", если некорректна долгота.

Например, при некорректной широте проверка примет такие сообщения:

-ERR invalid latitude argument\r\n
-ERR invalid latitude value\r\n
-ERR latitude value (200.0) is invalid\r\n

Примечания

  • Хранение местоположений пока не требуется; оно появится позже.
  • Широта ограничена -/+85.05112878°, а не -/+90°, из-за проекции Web Mercator, используемой Redis.

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

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

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

go / ЛОКАЛЬНО

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

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

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

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