scala - 如何使用返回类型 List 在 scala 中实现洪水填充
问题描述
我正在尝试以一种功能性的方式在 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)
}
...这显然行不通。
解决方案
推荐阅读
- outlook - 创建全天事件 msgraph API
- linux - bash 退出状态中 -e、-u 和 -o pipefail 的区别
- jq - 如何基于其他值使用 jq 向 JSON 添加新字段
- pip - Google Colab 模块未找到错误
- java - KafkaAppender for log4j2 阻止我的应用程序终止
- python - 用于购买资产的 REST API 与 Websocket
- google-cloud-platform - GCP Cloud Scheduler 上的有效 cron 是什么?
- c - 如何在c中找到BST中特定节点的深度
- python - 如何将第一列中的内容转换为 Pandas 中的列名
- reinforcement-learning - 如何在DDPG中为actor的输出添加约束?