- Описание
- Отправленные решения
488. Pixel battle
В каждом из тестов ваш арт будет произвольно спамиться вражескими пикселями. Ваша задача — защитить своё изображение на полотне pixel-battle
!
Для этого у вас есть два метода у объекта sdk:
changePixelColor
changeAreaColor
С помощью этих методов вы можете вернуть пикселям их прежний цвет. Количество их вызовов ограничено, поэтому старайтесь вызывать их минимальное количество раз.
type ColorCode = string;
/**
* изменяет цвет одного пикселя на полотне
*/
changePixelColor(col: number, row: number, color: string): void;
/**
* изменяет цвет участка,
* где:
* col1 и row1 являются координатами верхнего левого угла,
* col2 и row2 являются координатами нижнего правого угла,
* причём площадь участка больше 1 пикселя
*/
changeAreaColor(col1: number, row1: number, col2: number, row2: number, color: string): void;
Ваша задача написать функцию observeArt
, которая будет восстанавливать рисунок, со следующей сигнатурой:
function observeArt(field: HTMLDivElement, art: ColorCode[][], colors: Record<ColorCode, string>): void;
- Гарантируется, что изображение можно восстановить за указанное количество вызовов и перекрашивая пиксели не более одного раза.
- Стоит предпочитать вызов метода
changeAreaColor
вызовуchangePixelColor
. - Каждая клякса на полотне представляет собой прямоугольник (кляксы не соприкасаются друг с другом). Один и тот же пиксель может быть закрашен максимум один раз.
- В решении запрещается использовать
setInterval
или же вызыватьsetTimeout
рекурсивно. Интервал между появлением неправильных пикселей будет не больше 2 секунд. - Все пиксели имеют CSS класс
pixel
, цвет пикселя задается через свойствоbackground-color
.
Вы можете скачать playground.js с примером использования функции observeArt
.
Формат вывода
В качестве решения отправьте JavaScript-файл в следующим формате (типы в условии предоставлены для удобства):
const observeArt = (field, art, colors) => {
// your code here...
};
Ограничения
Ограничение времени
15 с
Ограничение памяти
640 МБ