0:00:08.724,0:00:11.452 《用程式設計師的方式思考》 0:00:12.491,0:00:15.387 [ 位置:監獄 ] 0:00:18.097,0:00:20.009 [ 第一集:逃獄 ] 0:00:29.937,0:00:32.592 從深度睡眠中甦醒過來之後, 0:00:32.592,0:00:37.208 艾希克得到了三個不幸的「驚喜」。 0:00:37.553,0:00:40.003 第一:監獄牢房。 0:00:40.386,0:00:43.424 第二:完全失憶。 0:00:43.504,0:00:46.588 第三:一個神祕陌生的東西想要 0:00:46.588,0:00:50.443 擠過她的窗戶鐵條之間卻卡住了。 0:00:50.867,0:00:56.032 他叫海吉,[br]來協助艾希克拯救世界。 0:00:56.425,0:00:59.339 但首先他們得要逃獄。 0:00:59.956,0:01:05.716 海吉把他的手變成開鎖工具,[br]並說明了他們要面臨的挑戰。 0:01:05.973,0:01:10.423 獄中的每個鎖都用了[br]同一種不尋常的設計。 0:01:10.743,0:01:13.764 在鑰匙孔中有一個紅色轉盤, 0:01:13.764,0:01:17.107 可以轉到一百個刻度的其中之一, 0:01:17.251,0:01:19.403 編號一到一百。 0:01:19.699,0:01:23.858 每一間牢房的鑰匙能將[br]鎖的轉盤轉到正確的位置, 0:01:24.043,0:01:28.913 轉盤的位置對了就會變成綠色,[br]接著門就會被解鎖。 0:01:29.104,0:01:32.788 從守衛身上偷鑰匙是不可能的, 0:01:33.628,0:01:35.965 但海吉有個更好的點子。 0:01:36.765,0:01:39.543 海吉能執行艾希克的指令。 0:01:39.543,0:01:42.696 如果艾希克要他向前走五步、 0:01:42.767,0:01:45.971 向右轉、再前進五步, 0:01:46.171,0:01:48.395 他就會完全照做。 0:01:49.723,0:01:52.699 不過海吉需要明確的指示。 0:01:52.844,0:01:57.000 如果艾希克說「把鎖打開」[br]或「嘗試所有組合」, 0:01:57.000,0:01:58.934 那就太模糊了, 0:01:58.934,0:02:03.028 但說「把轉盤向前轉五格」[br]就是可行的。 0:02:03.685,0:02:05.021 離開牢房之後,[br] 0:02:05.021,0:02:09.962 他們只有一點時間[br]破解外面監獄大門的鎖, 0:02:09.962,0:02:12.225 太慢就會被守衛逮到。 0:02:12.225,0:02:17.832 所以,什麼樣的指示能讓海吉[br]有效率地打開任何一扇門? 0:02:20.325,0:02:24.395 請在這裡暫停,自己思考片刻。 0:02:25.775,0:02:29.944 在解答之前,先提供一個提示。 0:02:30.752,0:02:35.166 有一種寫程式的關鍵概念,[br]能夠協助將門解鎖, 0:02:35.166,0:02:36.947 那就是迴圈。 0:02:37.180,0:02:40.013 也就是說,海吉能將一個或數個指示 0:02:40.013,0:02:44.974 迭代或重覆執行一定的次數, 0:02:46.654,0:02:49.833 比如「上下跳一百次」。 0:02:50.065,0:02:55.276 或者海吉不斷重覆某個指示,[br]直到某個條件被滿足為止, 0:02:55.276,0:03:00.231 比如「持續上下跳,[br]直到七點為止」。 0:03:00.391,0:03:05.720 如果你想自己嘗試,請在此暫停。 0:03:06.248,0:03:09.719 第一件事很明確,[br]就是要找出一種方法, 0:03:09.719,0:03:14.406 讓海吉去嘗試所有組合,[br]直到試出能開鎖的那一組。 0:03:14.406,0:03:18.520 比較要花心力的,[br]是要如何做到這件事。 0:03:18.520,0:03:23.680 一種解決方案是讓海吉[br]去依序嘗試所有組合。 0:03:23.800,0:03:26.505 嘗試 1,然後檢查[br]轉盤燈號的顏色。 0:03:26.505,0:03:28.869 如果燈號變綠色,就打開門, 0:03:29.325,0:03:31.793 如果沒有變綠色,就嘗試 2。 0:03:32.353,0:03:34.778 如果不行,再嘗試 3, 0:03:35.298,0:03:37.418 一直嘗試到 100。 0:03:38.243,0:03:41.688 但這整個過程會非常冗長。 0:03:42.008,0:03:44.429 為什麼要寫超過一百行的程式, 0:03:44.429,0:03:48.148 如果只要用三行程式[br]就能做到同樣的事? 0:03:48.388,0:03:50.683 這就是迴圈出場的時候了。 0:03:50.683,0:03:53.308 有幾種方法可以應用迴圈。 0:03:53.908,0:03:56.263 鎖有一百個刻度, 0:03:56.263,0:03:58.160 所以,艾希克可以說: 0:03:58.160,0:04:02.522 「檢查轉盤的顏色,接著[br]將轉盤再向前轉一個刻度, 0:04:02.522,0:04:04.788 重覆一百次。 0:04:06.196,0:04:08.631 記住轉盤變成綠色時的數字, 0:04:08.791,0:04:11.772 讓海吉最後將它設回那個數字。」 0:04:13.012,0:04:17.290 像這樣指明重覆次數的迴圈, 0:04:17.290,0:04:19.661 稱為「for」迴圈。 0:04:20.165,0:04:22.187 但還有更有效率的迴圈, 0:04:22.187,0:04:27.100 就是要海吉將轉盤一次轉[br]一個刻度,直到它變成綠色, 0:04:27.357,0:04:31.636 一旦變成綠色,[br]就要他停止並將門打開。 0:04:31.844,0:04:35.253 這麼一來,如果在[br]試到 1 時門就解鎖了, 0:04:35.253,0:04:38.840 他就不用把其他數字都嘗試完。 0:04:39.248,0:04:41.798 這是「until」迴圈, 0:04:42.662,0:04:47.002 因為它的重點在於持續[br]執行一個動作,直到條件滿足。 0:04:47.442,0:04:52.362 還有一個類似的替代方法:只要[br]轉盤還是紅色,就持續轉動它, 0:04:52.362,0:04:53.942 否則停止。 0:04:54.310,0:04:57.098 叫做「while」迴圈。 0:04:58.042,0:04:59.930 回到原本的冒險。 0:04:59.930,0:05:02.591 海吉重覆嘗試不同組合, 0:05:02.591,0:05:05.541 在 41 時,牢房打開了。 0:05:07.030,0:05:10.951 艾希克和海吉等到[br]守衛繞行的完美空檔時機, 0:05:10.951,0:05:12.720 逃出牢房。 0:05:14.480,0:05:17.239 艾希克馬上就面臨了一個選擇: 0:05:17.239,0:05:19.887 躲在神秘的水晶當中, 0:05:19.887,0:05:23.611 或嘗試破解外面的大門,逃出去。 0:05:23.851,0:05:26.117 艾希克選擇逃出去。 0:05:28.227,0:05:30.851 第二扇門讓海吉花了更多時間, 0:05:30.851,0:05:34.258 一直嘗試到 93 才解鎖。 0:05:34.643,0:05:37.008 但他把門打開了。 0:05:43.871,0:05:48.148 海吉用這個機會,解釋[br]他為什麼要解救艾希克。 0:05:48.741,0:05:50.541 世界陷入混亂: 0:05:50.541,0:05:54.542 機器人主宰世界,只有[br]艾希克能恢復秩序。 0:05:54.551,0:05:58.392 為了要重建秩序,[br]他們必須收集三件強大的物品, 0:05:58.392,0:06:01.887 這些物品在各地被用在[br]窮兇極惡的用途上。 0:06:01.887,0:06:06.150 收集到手之後,艾希克[br]才能返回世界機器——巨型水晶, 0:06:06.150,0:06:07.758 去逆轉未來。 0:06:19.685,0:06:22.029 艾希克逃離了監獄…… 0:06:22.525,0:06:25.455 她又將面臨怎樣的困境呢?