Проектная лаборатория
Собственный Redis
Этап 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 go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage ck3Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.