- Описание
- Отправленные решения
490. Спиритический сеанс
Вы участвуете в спиритическом сеансе. Опытный медиум ретранслирует сообщение из потустороннего мира.
Медиум использует квадратную спиритическую доску заданного размера size x size, расчерченную клетками одного размера. Сообщение выводится по одной букве и обязательно заканчивается точкой.
Ваша задача — написать программу для чтения сообщения со спиритической доски.
Ваше решение должно быть оформлено в виде функции, которая принимает следующие аргументы:
container
— элемент DOM, представляющий спиритическую доску;size
— количество строк и столбцов на спиритической доске (например, 10 для поля 10×10), значение не меньше 5;onEnd
— функция, которую должно вызвать ваше решение при прочтении сообщения до конца, и передать в неё прочитанное сообщение.
Формат ввода
При каждом выводе буквы в контейнер будет добавляться div-элемент, содержащий букву, и удаляться при выводе следующей буквы. Таким образом в каждый момент времени на доске будет присутствовать ровно одна буква. Вместо пробелов выводится символ нижнего подчеркивания, заменять такие символы на пробелы в ответе не нужно. Сообщение из букв формируется в естественном порядке: построчно сверху вниз, а в каждой строке буквы читаются слева направо.
Нужно учитывать, что у контейнера, представляющего спиритическую доску, заданы внутренние отступы (одинаковые для всех сторон).
Транслировать информацию из потустороннего мира — напряженный и кропотливый труд, поэтому выводимые буквы не всегда удается расположить ровно по центру клетки спиритической доски, но гарантируется, что каждый добавляемый div-элемент будет иметь максимум по площади ровно с одной клеткой, образованной равномерной сеткой доски.
На рисунке изображен пример того, как может выглядеть спиритическая доска с сообщением «hello_world_coderun.»:
Формат вывода
Исходный код нужно оформить следующим образом:
function solution(container, size, onEnd) {
// ваше решение
}
Функция solution
будет вызвана один раз перед выводом первой буквы.
Функция onEnd
имеет сигнатуру onEnd(message)
и должна быть вызвана ровно один раз после вывода на доску точки. От вашего решения ожидается только вызов функции onEnd
, в консоль выводить ничего не нужно.
Ограничения
Ограничение времени
4 с
Ограничение памяти
128 МБ