閱讀本文大概需要 1.8 分鐘。
作者 | 八知道也
前幾天休假的時候接觸了幾款挺有意思的小遊戲,寫出來安利一下,也許能搏同行一笑。
《程式設計師升職記》是一款送給宅男們的智力遊戲。 在每一層,老闆都會派給你一份工作。你可以通過編寫小程式自動把工作搞定!一旦你成功了,恭喜!你升職了!
實際上這是一個非常不錯的程式設計啟蒙遊戲,指令集與彙編類似,作為一個沒有學過彙編的弱雞,這就是我的彙編基礎課啦:)
程式的關卡介面長這樣,一看就十分硬核,難度階梯型遞增:
簡單的加減乘除 -> 斐波那契 -> 去重排序, ......
隨便挑選一關進去瞅瞅,可以看到能利用的主要指令包括:
copyfrom, copyto, add, sub, bump+(相當於++),bump-(相當於--),jump/jump if zero/jump if negative等。和彙編比較類似。
我們能做的就是用拖拽的方式組合不同的處理步驟,左上角的小人會根據你的設計去讀取InBox的資料,藉助中間的地毯(記憶體)可用空間快取中間結果,輸出最終結果到OutBox中。
當組織好右邊的工作流之後,就可以按那個綠色的執行鍵進行測試,執行鍵左右兩個按鍵可以進行正逆方向的單步除錯,最右邊的滑塊可以用來控制是否快進。執行起來的效果如下圖所示,還是很可愛的。
即使最終通過了右上角上級的考核,也不代表你就完美過關了。
因為遊戲還會對你的程式碼長度和耗時進行評估,並且告訴你哪裡還有改進空間。
優化診斷和效率診斷有時候不可兼得,真是逼死強迫症啊。
後者更多時對程式設計的考驗,但前者有時難以捉摸,由於指令集有限,即使邏輯一樣,jump的時機不一樣會導致程式長度有那麼一兩行的差異,總之要達到前者請儘量複用程式碼。
遊戲還有一個個人欣賞的優點:支援答案以虛擬碼的形式匯入匯出,這個特性很體現程式設計師思維方式,非常有利於愛好者分享討論自己的解法,已經發現github上有人上傳了自己的解法大全,並有幾百個star。
比較詳細介紹了上面那個遊戲,再簡短地介紹一下它的續作:7 Billion Humans
和前作最大的不同是移除了input和output,但是引入了並行,同步,隨機,變數,迴圈,條件判斷和更復雜高階的計算指令,難度比第一代有所上升,使得尋找同時滿足效率和長度的解法愈加困難,執行起來的效果也是更加忙碌。
以上游戲Steam均有銷售,支援Win和Mac,如有興趣,請儘量支援正版。