學習軌道
/
Go
Go
/
練習
/
機器人名稱
機器人名稱

機器人名稱

中等

說明

管理機器人出廠設定。

機器人從產線上下來時,還沒有名字。

第一次啟動機器人時,會隨機產生一個名字,格式是兩個大寫字母後面接著三個數字,例如 RX837 或 BC811。

偶爾我們需要把機器人重設回出廠設定,這表示它的名字會被清除。 下一次你詢問時,這台機器人會以一個新的隨機名字回應。

名字必須是隨機的:不能遵循可預測的順序。 使用隨機名字意味著有名稱碰撞的風險。 你的解法必須確保每一台現有的機器人都擁有唯一的名字。

實作

機器人的名稱有可能會用完。當所有可能的機器人名稱都已經被分配完之後,就應該回傳錯誤。

加分測試

當你讓go test通過之後,你會發現在測試套件裡有一個名為TestCollisions的測試,它預設會被跳過,因為執行起來可能需要很久。 這個測試會不斷建立新的機器人,直到再也沒有新名稱可以分配給機器人為止。

想讓這個測試執行,請移除這一行:

t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")

想讓這個測試通過,你必須確保機器人的名稱以前沒有被使用過,並且名稱能夠有效率地分配。


出處

源自與 Paul Blackwell 在 gSchool 的一次除錯過程。
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Go Exercism

準備好開始 機器人名稱 了嗎?

註冊 Exercism,透過 34 個概念165 個練習 和真人引導來學習並精通 Go,全部免費。