Я пытаюсь реализовать алгоритм заливки в Scala функциональным способом, чтобы мне не приходилось использовать переменные или состояния любого типа.
Итак, что я запрашивается реализация, для определения функции, аналогичного этому, где возвращаемый тип представляет собой список пикселей, которые должны быть заполнены.
def FloodFill(replacementColor: Color, pixel: Pixel, pixels: List[Pixels] ): List[Pixels]
pixels: List[Pixel
предполагается границей формы и pixel: Pixel
чтобы быть где-то внутри фигуры.
До сих пор я пробовал что-то вроде этого:
def FloodFill(replacementColor: Color, pixel: Pixel, pixels: List[Pixels] ): List[Pixels]= {
if(pixels.exists(p => p.x == pixel.x && p.y == pixel.y)) return pixels
FloodFill(color, new Pixel(pixel.x, pixel.y-1, color), new Pixel(pixel.x, pixel.y, color) ::pixels)
FloodFill(color, new Pixel(pixel.x, pixel.y+1, color), new Pixel(pixel.x, pixel.y, color) ::pixels)
FloodFill(color, new Pixel(pixel.x-1, pixel.y, color), new Pixel(pixel.x, pixel.y, color) ::pixels)
FloodFill(color, new Pixel(pixel.x+1, pixel.y, color), new Pixel(pixel.x, pixel.y, color) ::pixels)
}
... что явно не работает.