這位小朋友沒玩過魔方,家裏也沒有魔方。但這都不妨礙這位邏輯能力超強的孩子實現一個(虛擬)數字魔方。
魔方有六個麵,每麵有9個色塊,需要一個標識體係。他先提出行列分開的 indexing 方案,列 0,1,2,行 0,1,2。我告訴他咱們還需要一個線性的方案,如 0,1,2,...,8。這兩個 indexing 我們都需要。
他一開始用很簡單粗暴的方法建立兩種 indexing 之間的映射,即一大堆的 if 和 else。我說有沒有更好的辦法。他進行了一番嚐試(找 pattern)後,自己搞定了教科書般的整數除法加餘數的算法。
建立完整六個麵的模型有點 tricky,不是每個麵都能遵循一致的 indexing。但 Felix 似乎沒有任何困難。
接著照著初步建立的模型,render 了第一塊紅色塊:
嚐試第二塊時,出了點小問題:
Felix 馬上意識到了原因:“y never changed”。
下課時間到了。遺留的問題很自然地成為作業了。