- Описание
- Отправленные решения
491. Escape
Малоизвестный путешественник Оливер Моур начал своё одиночное путешествие к отдалённому острову в Тихом океане, чтобы изолироваться и найти вдохновение для своего нового писательского проекта Escape. Однако приключение принимает неожиданный оборот, когда лодка Моура разбивается и он оказывается на необитаемом острове без возможности связи. Оливер понимает, что его единственный шанс на спасение — отправить сигнал SOS с помощью найденных на острове старых передатчиков, которые могут передать сигнал до ближайшего корабля или береговой станции.
Каждый передатчик обладает только световым прибором, который может передать сообщение, закодированное в азбуку Морзе. Подключившись к одному из маяков, Оливер обнаружил интерфейс управления, который представляет собой всего лишь один файл. Световые сигналы управляются с помощью кнопок. Чтобы включить сигнал на маяке, нужно одновременно нажать кнопки F и D, чтобы выключить — B и U. После полной передачи сообщения нужно вернуть устройство управления в исходное состояние.
Чтобы повысить свои шансы на выживание, Оливер решил передавать сообщения на все передатчики по следующему принципу: проигрываем на первом свободном, а если все заняты передачей сообщения, то ждём первого освободившегося и проигрываем на нём.
Если на передатчике что-то пошло не так, нужно заново воспроизвести на нём слово (не всю фразу, а только слово), в момент воспроизведения которого что-то сломалось.
Формат ввода
На вход в обработчик будут приходить сообщения, состоящие только из слов на английском языке и пробелов, без знаков препинания и прочих символов.
Вам необходимо реализовать функцию, которая первым аргументом будет получать WebSocket, вторым аргументом — массив из передатчиков, третьим — настройки для пауз при передаче через азбуку Морзе:
- короткий сигнал — включение на 0,5 сек.;
- длинный сигнал — включение на 1 сек.;
- пауза между словами — 2 сек.;
- пауза между символами азбуки Морзе — 0,2 сек.
В onmessage
веб-сокета будут приходить сообщения, которые нужно воспроизвести с помощью API передатчиков.
Примечание
Для тестирования решения скачивайте приложенный файл playground.zip. В файле src/solution.js
можно писать решение и визуализировать состояние передатчиков.
В ответ необходимо отправить содержимое файла solution.js
.
Ограничения
Ограничение времени
10 с
Ограничение памяти
64 МБ