【前言】
無庸置疑,我最崇拜的偶像之一就是尤拉(Euler,臺灣通常譯作歐拉,但我喜歡沿用我小時候的習慣,稱他為尤拉)
而我擅自猜測:【尤拉計劃(Project Euler)】大概就是一群和我一樣崇敬尤拉的人所發起的計劃吧。
Euler Project裡面有數百道數學題,很多都是「很數學」的題目:意即不是生活應用題,解開謎底對人生可能也沒什麼幫助。純粹就是享受動腦的樂趣用的。
而且這些數學題都不必用紙筆算,而是用電腦算、通常是需要寫程式來計算。我非常喜歡這個概念,這是何等迷人的設計啊!完全擺脫了中學考試繁瑣的計算過程,讓人可以專注在解題的技巧上。
Euler Project的題目都有設計過,不需要高深的程式語言功力,也不需要深厚的數學功力,就可以享受解題的樂趣。不過你必需具備一點創意與想像力!在Euler Project不論你的解題過程如何,他只認定你答對或答錯,所以你可以盡己所能地用各種方式找出答案,不管是土法煉鋼、還是獨具巧思,只要能答對,都行!
為了保持解題的樂趣,Project Euler希望解題者不要在Project Euler論壇以外PO出解題方法。但是網路上仍然有很多人po出解答。我都會小心翼翼地避開,深怕一不小心就壞了我的思考樂趣。所以我在這邊也不會po出解答,僅抒發我思考偶得的樂趣。
【Project Euler No.18】
Find the maximum total from top to bottom of the triangle below:
我之所以會使用【Excel】的分類來po這題,正是因為我覺得Excel比一般程式語言更適合用來觀察這一題。
- Excel一格一格的儲存格介面,正好為這個堆砌起來的三角型提供了一個思考的現成框架。比起抽象的程式語言來得更平易近人
- 不需要寫任何程式、甚至不需要用到複雜公式。就能輕鬆解決這個問題
以下不解釋解題方法,但我可以講解一下如何快速打造出適合思考的介面。
Step 1
把題目的數字複製貼上到Excel的A1至A15,此時的格式全部擠在一起,還未成為平穩漂亮的三角形。
Step 2
按下Ctrl+H,將空格取代成兩個斜線「//」
Step 3
在A21輸入公式:=REPT(“/”,35-ROW())&A1
並向下複製至A35
Step 4
複製,原地選擇性貼上為值
Step 5
對A21至A35進行資料剖析,選擇以「/」作為分隔符號。並按下完成。
Step 6
完成。如果覺得不太漂亮,可以稍微調整一下儲存格欄寬。