Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Задачи/Go-разработчик/Заказ такси

Заказ такси

Условие задачи

Задача связана с оценкой спроса на такси. Необходимо реализовать функцию GetDemand, которая будет рассчитывать текущий спрос в заданной географической точке. Для этого нужно агрегировать данные о поездках, разбивая время на минутные интервалы, и учитывать только последние 3 минуты активности

gotype Point struct {
  Lat float32
  Lng float32
}

type Location struct {
  UpperLeft  Point
  LowerRight Point
}

var locations = []Location{
  {
    UpperLeft: Point{
      Lat: 70,
      Lng: 70,
    },
    LowerRight: Point{
      Lat: 69,
      Lng: 69,
    },
  },
  {
    UpperLeft: Point{
      Lat: 69,
      Lng: 69,
    },
    LowerRight: Point{
      Lat: 68,
      Lng: 68,
    },
  },
}

func (p Point) WithinBounds(upperLeft Point, lowerRight Point) bool {
  // naive (not correct) realization
  if p.Lat > upperLeft.Lat {
    return false
  }
  if p.Lng > upperLeft.Lng {
    return false
  }
  if p.Lat < lowerRight.Lat {
    return false
  }
  if p.Lng < lowerRight.Lng {
    return false
  }
  return true
}

type Consumer struct{}

func (c *Consumer) ConsumeRider(ctx context.Context, points []Point) {
  for _, p := range points {
    for _, l := range locations {
      if p.WithinBounds(l.UpperLeft, l.LowerRight) {
        // point belongs to this location
      }
    }
    // what if we can not find location
  }
}

func (c *Consumer) ConsumeDriver(ctx context.Context, points []Point) {
  for _, p := range points {
    for _, l := range locations {
      if p.WithinBounds(l.UpperLeft, l.LowerRight) {
        // point belongs to this location
      }
    }
    // what if we can not find location
  }
}

func (c *Consumer) GetDemand(ctx context.Context, point Point) float64 {
  // TODO
  riders := 123
  drivers := 50
  return float64(riders) / float64(drivers)
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта