Flower Field 是对热门游戏 Minesweeper 的一次充满温情的重新演绎。游戏的目标是利用数字提示找出花园中所有的花,这些提示会说明有多少朵花与某个方格直接相邻(水平、垂直或对角方向)。Flower Field 曾随 Microsoft Windows 的地区版本在意大利、德国、韩国、日本和台湾发行。
你的任务是给一块已完成的花田中的空格填上花的数量。花园本身是一块矩形棋盘,棋盘上的格子要么是空格(' '),要么是一朵花('*')。
对每个空格,数出与它相邻的花的数量(横向、纵向、斜向)。如果空格周围没有相邻的花,就保持为空。否则,用相邻花的数量替换它。
例如,你可能会拿到下面这样一块 5 x 4 的棋盘(为了在屏幕上显示,这里的空白位置用“·”表示):
·*·*·
··*··
··*··
·····
你的代码应该把它转换成这样:
1*3*1
13*31
·2*2·
·111·
花园用一个以 null 结尾的字符串表示,每行末尾都有一个换行符。
例如:" \n * \n \n"
| 寄存器 | 用途 | 类型 | 说明 |
|---|---|---|---|
$a0 |
输入 | 地址 | 以 null 结尾的输入字符串 |
$a1 |
输入/输出 | 地址 | 以 null 结尾的输出字符串 |
$t0-9 |
临时 | 任意 | 用于临时存储 |
我们探讨嵌套 for 循环、巧妙运用 min/max 简化边界检查、函数式管道以及二维矩阵的使用。