490. Спиритический сеанс

Не решаласьЛёгкая

Вы участвуете в спиритическом сеансе. Опытный медиум ретранслирует сообщение из потустороннего мира.

Медиум использует квадратную спиритическую доску заданного размера size x size, расчерченную клетками одного размера. Сообщение выводится по одной букве и обязательно заканчивается точкой.

Ваша задача — написать программу для чтения сообщения со спиритической доски.

Ваше решение должно быть оформлено в виде функции, которая принимает следующие аргументы:

  • container — элемент DOM, представляющий спиритическую доску;

  • size — количество строк и столбцов на спиритической доске (например, 10 для поля 10×10), значение не меньше 5;

  • onEnd — функция, которую должно вызвать ваше решение при прочтении сообщения до конца, и передать в неё прочитанное сообщение.

Формат ввода

При каждом выводе буквы в контейнер будет добавляться div-элемент, содержащий букву, и удаляться при выводе следующей буквы. Таким образом в каждый момент времени на доске будет присутствовать ровно одна буква. Вместо пробелов выводится символ нижнего подчеркивания, заменять такие символы на пробелы в ответе не нужно. Сообщение из букв формируется в естественном порядке: построчно сверху вниз, а в каждой строке буквы читаются слева направо.

Нужно учитывать, что у контейнера, представляющего спиритическую доску, заданы внутренние отступы (одинаковые для всех сторон).

Транслировать информацию из потустороннего мира — напряженный и кропотливый труд, поэтому выводимые буквы не всегда удается расположить ровно по центру клетки спиритической доски, но гарантируется, что каждый добавляемый div-элемент будет иметь максимум по площади ровно с одной клеткой, образованной равномерной сеткой доски.

На рисунке изображен пример того, как может выглядеть спиритическая доска с сообщением «hello_world_coderun.»:

spirit-board

Формат вывода

Исходный код нужно оформить следующим образом:

function solution(container, size, onEnd) {  
    // ваше решение
}

Функция solution будет вызвана один раз перед выводом первой буквы.

Функция onEnd имеет сигнатуру onEnd(message) и должна быть вызвана ровно один раз после вывода на доску точки. От вашего решения ожидается только вызов функции onEnd, в консоль выводить ничего не нужно.

Ограничения

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

4 с

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

128 МБ

Теги

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