扫雷

扫雷

中等

简介

扫雷 是一款流行的游戏,玩家要根据数字提示找出地雷,提示中的数字表示与该方格直接相邻(水平、垂直或斜向)的地雷数量。

说明

你的任务是在一个已完成的扫雷棋盘中,为空格填上周围的地雷数量。 棋盘是一个由方格组成的矩形,每个方格要么是空格(' '),要么是一颗地雷('*')。

对于每个空格,数出与它相邻的地雷数量(水平、垂直、对角都算)。 如果这个空格周围没有地雷,就把它留空。 否则,把它替换为相邻地雷的数量。

例如,你可能会收到一个 5 x 4 的棋盘,像这样(为了在屏幕上显示,这里用 '·' 字符表示空格):

·*·*·
··*··
··*··
·····

你的代码应该把它变成这样:

1*3*1
13*31
·2*2·
·111·

性能提示

所有输入和输出都是 ASCII。 Rust 的String和&str是 utf8,所以,虽然你可能以为"Hello".chars()很简单,实际上它必须逐个检查每个字符,看看它的长度是 1、2、3 还是 4 个u8。 如果我们知道一个&str是 ASCII,就可以调用.as_bytes(),并把底层数据当作&[u8](字节切片)来引用。 对一个 ASCII 字节切片进行迭代要快得多,因为不涉及码点,每个 ASCII 字节的长度都是 1 个u8。

你能在不克隆输入的情况下完成这个挑战吗?

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Rust Exercism

准备好开始 扫雷 了吗?

注册 Exercism,借助 99 个练习 和真人导师指导,学习并掌握 Rust,全部免费。

深入探索 扫雷!

我们探讨嵌套 for 循环、巧妙运用 min/max 简化边界检查、函数式管道以及二维矩阵的使用。