The Chasm | Think Like A Coder, Ep 6

449,226 views ・ 2020-01-30

TED-Ed


請雙擊下方英文字幕播放視頻。

譯者: Lilian Chiu 審譯者: H_L Au
[用程式設計的方式思考]
[地點:198 森林]
[第六集 裂谷]
00:21
Ethic, Hedge, and Octavia stand on the edge of a bottomless ravine.
0
21937
4675
艾希克、海吉、奧特薇雅 站在無底深谷的邊緣。
00:26
It’s the only thing between them and the tower
1
26612
2690
他們和高塔之間就只有這個深谷,
00:29
that houses the second of three powerful artifacts.
2
29302
3648
三個強大工藝品中的 第二個就在這座塔內。
00:32
They’ve got a brief window of time to get across before the guards return.
3
32950
4980
他們在守衛回來之前, 還有一點時間可以設法越過深谷。
00:37
With Hedge’s fuel gauge on empty he won’t be able to fly Ethic across,
4
37930
4705
海吉的燃料已經快用盡, 他無法帶艾希克飛過去。
00:42
so the only option is to make a bridge.
5
42635
3630
剩下的唯一選擇,就是造橋。
00:46
Fortunately, the floating stacks of stones nearby are bridge components—
6
46265
4655
幸運的是,附近有一疊疊的浮石, 是可造橋的元件——
00:50
invented by Octavia herself— called hover-blocks.
7
50920
4026
它們是奧特薇雅自己的發明 ——叫做懸浮塊。
00:54
Activate a pile with a burst of energy,
8
54946
2552
用能量激發其中一疊,
00:57
and they’ll self-assemble to span the ravine as Ethic walks across.
9
57498
4516
它們就會自行組合,跨越深谷, 讓艾希克可以走過去。
01:02
But there is, of course, a catch.
10
62014
3578
但,當然,沒這麼簡單。
01:05
The hover-blocks are only stable when they’re perfectly palindromic.
11
65592
4659
懸浮塊只有在完全 對稱的時候才會穩定。
01:10
Meaning they have to form a sequence
12
70251
2260
意即,它們必須形成一個序列,
01:12
that’s the same when viewed forwards and backwards.
13
72511
4263
順著看跟逆著看 都要完全一樣才行。
01:16
The stacks start in random orders,
14
76774
2170
每一疊開始的順序都是隨機的,
01:18
but will always put themselves into a palindromic configuration
15
78944
3660
但在可以的情況下, 都會自行排成對稱的形式。
01:22
if they can.
16
82604
1290
01:23
If they get to a point where a palindrome isn’t possible,
17
83894
2880
如果出現無法達成對稱的情況,
01:26
the bridge will collapse,
18
86774
1551
橋就會崩垮,
01:28
and whoever’s on it will fall into the ravine.
19
88325
3489
橋上的人就會落入深谷中。
01:31
Let’s look at an example.
20
91814
1638
我們來看一個例子。
01:33
This stack would make itself stable.
21
93452
2460
這一疊懸浮塊會自行穩定下來。
01:35
First the A blocks hold themselves in place.
22
95912
3000
A 懸浮塊會先就位。再到 B。
01:38
Then the B’s.
23
98912
1070
01:39
And finally the C would nestle right between the B’s.
24
99982
3690
最後是 C,在兩個 B 之間。
01:43
However, suppose there was one more A.
25
103672
3450
然而,如果有再多一個 A,
01:47
First two A blocks form up, then two B’s,
26
107122
3120
兩個 A 會先排好, 接著是兩個 B,
01:50
but now the remaining C and A have nowhere to go,
27
110242
3370
但,現在就剩下一個 C 及一個 A,無處可去,
01:53
so the whole thing falls apart.
28
113612
2460
這個結構就會崩垮。
01:56
The Node of Power enables Hedge to energize a single stack of blocks.
29
116072
4670
力量球會讓海吉能夠 用能量激發其中一疊懸浮塊。
02:00
What instructions can Ethic give Hedge to allow him to efficiently find
30
120742
4334
艾希克要給海吉什麼樣的指令, 才能讓他有效率地找到
02:05
and power a stable palindromic stack?
31
125076
3051
一疊穩定的對稱懸浮塊, 並用能量激發它們?
02:08
Pause now to figure it out for yourself.
32
128127
9970
[若你想要嘗試解題,請在此暫停。]
02:18
Examples of palindromes include ANNA, RACECAR, and MADAM IM ADAM.
33
138097
5461
對稱的例子包括 ANNA、 RACECAR、MADAM IM ADAM。
02:23
Counting the number of times a given letter appears in a palindrome
34
143558
3730
計算一個字母出現在 對稱排列中的次數,
02:27
will reveal a helpful pattern.
35
147288
2532
能找出有幫助的模式。
02:29
Pause now to figure it out for yourself.
36
149820
4831
[若你想要嘗試解題,請在此暫停。]
02:34
Let’s first look at a naïve solution to this problem.
37
154651
3490
針對這個問題,咱們先來 看一個天真的解決方案。
02:38
A naïve solution is a simple, brute-force approach that isn’t optimized—
38
158141
4708
天真的解決方案是簡單、 用蠻力、沒有最佳化的方式——
02:42
but will get the job done.
39
162849
1980
但能完成任務。
02:44
Naïve solutions are helpful ways to analyze problems,
40
164829
3491
天真的解決方案 可以協助分析問題,
02:48
and work as stepping stones to better solutions.
41
168320
3434
且可以當作墊腳石, 以想出更好的解決方案。
02:51
In this case, a naïve solution is to approach a pile of blocks,
42
171754
3770
在這裡,天真的解決方案是
先選一疊懸浮塊, 嘗試所有的排列組合,
02:55
try all the arrangements,
43
175524
1500
02:57
and see if one is a palindrome by reading it forward and then backwards.
44
177024
4727
再透過正向及逆向閱讀的方式, 看看是否有一種組合是對稱的。
03:01
The problem with this approach
45
181751
1480
這個方法的問題 是要花很大量的時間。
03:03
is that it would take a tremendous amount of time.
46
183231
2493
03:05
If Hedge tried one combination every second,
47
185724
2850
假設海吉嘗試一種 組合需要一秒鐘,
03:08
a stack of just 10 different blocks would take him 42 days to exhaust.
48
188574
5198
若一疊中有十種不同的懸浮塊, 就要花四十二天試盡所有組合。
03:13
That’s because the total time is a function of the factorial
49
193772
3830
因為需要的總時間
03:17
of the number of blocks there are.
50
197602
2142
會隨懸浮塊數目的乘階而增加。
03:19
10 blocks have over 3 million combinations.
51
199744
3600
十個懸浮塊就會有三百萬種組合。
03:23
What this naïve solution shows is that we need a much faster way
52
203344
4280
天真的解決方案告訴我們, 我們需要一種更快的方法,
03:27
to tell whether a pile of blocks can form a palindrome.
53
207624
3593
來辨別哪一疊懸浮塊 能夠形成對稱排列。
03:31
To start, it may be intuitively clear that a pile of all different blocks
54
211217
4716
一開始,直覺上很清楚, 一疊懸浮塊中,
若每塊的字母都不同, 就不可能形式對稱排列。為什麼?
03:35
will never form one.
55
215933
1420
03:37
Why?
56
217353
790
03:38
The first and last blocks can’t be the same if there are no repeats.
57
218143
5281
若沒有重覆的字母,第一個 和最後一個懸浮塊就不會相同。
03:43
So when can a given sequence become a palindrome?
58
223424
5012
所以,什麼情況下一疊懸浮塊 能夠形成對稱的排列?
03:48
One way to figure that out is to analyze a few existing palindromes.
59
228436
4480
找出答案的方式之一, 就是分析幾個既有的對稱排列。
03:52
In ANNA, there are 2 A’s and 2 N’s.
60
232916
3254
在 ANNA 中, 有兩個 A、兩個 N。
03:56
RACECAR has 2 R’s, 2 A’s, 2 C’s, and 1 E.
61
236170
4886
RACECAR 有兩個 R、 兩個 A、兩個 C、一個 E。
04:01
And MADAM IM ADAM has 4 M’s, 4 A’s, 2 D’s, and 1 I.
62
241056
6730
MADAM IM ADAM 有四個 M、
四個 A、兩個 D、一個 I。
04:07
The pattern here is that most of the letters occur
63
247786
3140
這裡的模式是,有出現的字母
04:10
an even number of times,
64
250926
1774
大部分都以雙數出現,
04:12
and there’s at most 1 that occurs just once.
65
252700
3280
最多只有一個字母會出現一次。 是這樣嗎?
04:15
Is that it?
66
255980
1110
04:17
What if RACECAR had 3 E’s instead of 1?
67
257090
3260
如果 RACECAR 有三個 E, 而不是一個呢?
04:20
We could tack the new E’s onto the ends and still get a palindrome,
68
260350
3710
我們可以把新增加的兩個 E 補在兩端,仍然會對稱,
04:24
so 3 is ok.
69
264060
1840
所以三個也可以。
04:25
But make that 3 E’s and 3 C’s, and there’s nowhere for the last C to go.
70
265900
6064
但如果有三個 E 和三個 C,
最後一個 C 就沒地方放了。
04:31
So the most generalized insight is that
71
271964
2720
所以,最一般化的洞見是,
04:34
at most one letter can appear an odd number of times,
72
274684
4096
最多只能有一個字母 出現的次數是單數,
04:38
but the rest have to be even.
73
278780
3066
其他字母的出現次數都要是雙數。
04:41
Hedge can count the letters in each stack and organize them into a dictionary,
74
281846
4314
海吉可以去計算每一疊懸浮石 當中的字母數,整理成字典,
04:46
which is a tidy way of storing information.
75
286160
2725
這是種很整齊的資訊儲存方法。
04:48
A loop could then go through and count how many times odd numbers appear.
76
288885
4579
接著可以用迴圈來計算 單數出現了幾次。
04:53
If there are less than 2 odd characters, the stack can be made into a palindrome.
77
293464
5500
若一疊當中的單數字母不到兩個, 它就可以形成對稱排列。
04:58
This approach is much, much faster than the naïve solution.
78
298964
3720
這個方法比天真的 解決方案快非常多。
05:02
Instead of factorial time, it takes linear time.
79
302684
3420
需要的時間不是 階乘的,是線性的。
05:06
That’s where the time increases
80
306104
1570
也就是說,需要的時間 和懸浮塊的數目成正比。
05:07
in proportion to the number of blocks there are.
81
307674
2710
05:10
Now write a loop for Hedge to approach the piles individually,
82
310384
3990
現在只要為海吉寫一個迴圈, 讓他分別接近每一疊懸浮塊。
05:14
and stop when he finds a good one, and you’ll be ready to go.
83
314374
4155
在他找到可用的一疊之後就停止, 這樣你就可以準備出發了。
05:18
Here’s what happens:
84
318529
1389
結果,發生的狀況是:
05:19
Hedge is fast, but there are so many piles it takes a long time.
85
319918
4046
海吉動作很快,但有太多疊了, 他花了很長的時間。
05:23
Too long.
86
323964
1356
太久了。
06:17
Ethic and Hedge are safe.
87
377897
1680
艾希克和海吉安全了。
06:19
But Octavia is not so lucky.
88
379577
2423
但奧特薇雅卻沒這麼幸運。
關於本網站

本網站將向您介紹對學習英語有用的 YouTube 視頻。 您將看到來自世界各地的一流教師教授的英語課程。 雙擊每個視頻頁面上顯示的英文字幕,從那裡播放視頻。 字幕與視頻播放同步滾動。 如果您有任何意見或要求,請使用此聯繫表與我們聯繫。

https://forms.gle/WvT1wiN1qDtmnspy7