480. Маяк и волны

Не решаласьСредняя

Условие

lighthouse

Вы являетесь смотрителем маяка. Волна после появления через определенное время проходит через буй. Зная это время, вы можете вычислить скорость движения волны от места её появления до берега. Если в одно и то же время берега достигают несколько волн, то их высота суммируется.

Ваша задача, используя данные о скорости движения волн и их высоте, определить время достижения берега опасными волнами выше 5 метров в высоту.

type Timestamp = number;

interface Wave {
    startTime: Timestamp;
    height: number;
    buoyReached: Promise<void>;
}

interface DangerousWave {
    reachTime: Timestamp;
    height: number;
}

type WavesEndHandler = (result: DangerousWave[]) => void;

interface DetectDangerousWaveProps {
    distanceToLighthouse: number;
    distanceToBuoy: number;
    wavesFinished: Promise<WavesEndHandler>;
}

type DetectDangerousWaveReturn = (wave: Wave) => void;

Формат ввода

Можно скачать playground.js с примером использования функции detectDangerousWave.

Примечание

  1. Гарантируется, что волны не будут обгонять друг друга до достижения буйка.
  2. Гарантируется, что волны достигнут буйка и слушателя в моменты времени, кратные 100 от начала их появления.
  3. distanceToLighthouse, distanceToBuoy — это расстояния от берега.
  4. wavesFinished всегда будет зарезолвлен после прохождения последней волны через буй.

Формат ответа:

В качестве решения отправьте JavaScript-файл в следующим формате (типы в условии предоставлены для удобства):

export const detectDangerousWave = ({
    distanceToLighthouse,
    distanceToBuoy,
    wavesFinished,
}) => {
    // your code here...

    return (wave: Wave) => {
        // your code here...
    };
};

Ограничения

Ограничение времени

10 с

Ограничение памяти

254,73 МБ

Теги

JavaScript Node.js 20.14
Нужно войти, чтобы отправить решение.Войти