Мне нужно использовать функцию floodFill, чтобы все точки внутри контура звездочки изображения ASCII превратились в звездочки. Может ли кто-нибудь помочь?
"use strict";
let bitmap = [
"................**********........................",
"...............*..........*.......................",
"..........*****............*........*.............",
".........*.................*.......*.*....*****...",
"........*................***......*...*.**.....**.",
"....****.................*.......*.....*.........*",
"..**......................*******................*",
".*...............................................*",
".*...............................................*",
"*...........****.............................****.",
"*..........*....*.........................***.....",
".*.........*....*.......................**........",
"..***.......****.......................*..........",
".....****......................******..*..........",
".........**********************.....****.........."
];
const bitmap2string = bitmap => bitmap.join("\n");
console.log(bitmap2string(bitmap));
const showOnPosition = (x, y) =>
bitmap[y].charAt(x);
const changeSymbol = (x, y, symbol) =>
bitmap[y].substr(0, x) + symbol + bitmap[y].substr(x + 1);
const floodFill = (x, y) =>
showOnPosition(x, y) !== "*"
? bitmap.map((line, i) => (i === y ? changeSymbol(x, y, "*") : line))
: bitmap;
Я написал код для:
- showOnPosition - проверить, что в данный момент находится в координатах x, y массива
- changeSymbol - изменить символ в любой заданной позиции
- floodFill - проверяет, что находится в текущей позиции, и, если это не звездочка, меняет ее на звездочку и выдает обновленный массив в консоли.
Теперь я застрял в том, как заставить все это рекурсивно проходить по изображению (справа) и заполняет данный контур звездочками.
Результат должен быть:
с вызовом функции floodFill с любыми координатами, например, console.log (floodFill (8, 7))
в консоли отображается следующее: