踩地雷

踩地雷

中等

簡介

踩地雷是一款熱門遊戲,玩家必須運用數字提示找出地雷,這些提示會指出與某個方格直接相鄰(水平、垂直、對角)的地雷數量。

說明

你的任務是在一個已經完成的踩地雷棋盤上,為空格標上周圍的地雷數量。 棋盤本身是一個長方形,由許多格子組成,每個格子不是空格(' ')就是地雷('*')。

對每個空格來說,計算與它相鄰的地雷數量(水平、垂直、對角都算)。 如果這個空格旁邊沒有地雷,就讓它保持空白。 否則就把它換成相鄰的地雷數量。

舉例來說,你可能會收到像這樣的 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 位元組的長度都是一個u8。

你能在不複製輸入的情況下完成這項挑戰嗎?

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Rust Exercism

準備好開始 踩地雷 了嗎?

註冊 Exercism,透過 99 個練習 和真人引導來學習並精通 Rust,全部免費。

深入探索 踩地雷!

我們會探討巢狀`for`迴圈、用 min/max 巧妙簡化邊界檢查、函式化管線,以及二維矩陣的使用。