The Tower of Epiphany | Think Like A Coder, Ep 7

428,635 views ・ 2020-02-27

TED-Ed


下の英語字幕をダブルクリックすると動画を再生できます。

翻訳: Moe Shoji 校正: Yasushi Aoki
00:31
Ethic and Hedge are on the ground floor of a massive tower.
0
31587
5701
エシックとヘッジは 巨大な塔の1階にいます
00:37
Barriers of energy separate them from their quest’s second goal:
1
37288
4657
エネルギーのバリアによって
2つめのアイテム「創造の石」から 隔てられています
00:41
the Node of Creation.
2
41945
2000
00:52
To reach it, Ethic must use three energy streams to climb the tower.
3
52667
4742
手に入れるには 3つのエネルギーの流れに乗って 塔を登る必要があります
00:57
As soon as she steps forward a timer will begin counting down from 60 seconds.
4
57409
5950
一歩前に出るやいなや 60秒のカウントダウンが始まります
01:07
At the back of the room there’s a basin made of invisible towers
5
67359
4300
部屋の奥には その中に エネルギーを保持できる―
01:11
that can hold energy between them.
6
71659
3076
目に見えない塔がそびえています
01:14
After one minute, a torrent of energy will pour down from above,
7
74735
4130
60秒が過ぎると エネルギーが勢いよく 上から降ってきて
01:18
filling one unit at a time,
8
78865
2150
1ユニットずつ満たしていきます
01:21
with a force field preventing it from spilling out the front or back.
9
81015
4480
力場によって エネルギーが前後から 漏れないようになっているのです
01:25
During the 60 calm seconds,
10
85495
2130
始まるまでの60秒の間に
01:27
Ethic and Hedge must decide exactly how many units of energy will fall.
11
87625
5098
エシックとヘッジはどれくらいのエネルギーを 降らせるかを決めなければなりません
01:32
For each of the three challenges,
12
92723
1700
3回の挑戦のたびに
01:34
they must choose the amount that will fill the basin exactly.
13
94423
3665
塔のくぼみをちょうど満たす エネルギー量を求めるのです
01:38
If they do so, the energy will propel them further upwards.
14
98088
3850
成功すれば エネルギーに乗って 上へと進むことができます
01:41
But if they get the amount at all wrong, the energy lift will fail,
15
101938
4620
でも量を間違えると エネルギーの昇降機は働かず
01:46
dropping them.
16
106558
1490
下に落ちてしまいます
01:48
Diagrams on the walls illustrate some examples.
17
108048
3300
壁にある図に 例が示されています
01:51
This configuration will capture exactly 2 units of energy.
18
111348
4270
この形の場合は 2ユニット分の エネルギーが入ります
01:55
This configuration will capture 4— 3 here, and 1 here.
19
115618
5117
この形の場合は 4ユニット分― 左に3つ 右に1つです
02:00
And this one will also capture 4,
20
120735
2540
この場合も 4ユニット分です
02:03
because any energy on the right would spill out.
21
123275
3413
なぜなら 右端に入ったエネルギーは こぼれ出てしまうからです
02:06
The energy will rain down in such a way
22
126688
2220
降り注ぐエネルギーは
02:08
that it’ll only overflow if there’s no space that could hold it.
23
128908
4630
周囲に支えるものがなければ あふれてしまうのです
02:13
Hedge can make one tower of blocks visible at a time and count how tall it is,
24
133538
5327
ヘッジはブロックの列を1列ずつ可視化して 高さを測ることができますが
02:18
but he can’t look at the whole structure all at once.
25
138865
3860
全体の構造を一度に 見ることはできません
02:22
How does Ethic program Hedge to figure out
26
142725
2805
エシックがヘッジを どのようにプログラミングすれば
02:25
exactly how much energy each basin can hold?
27
145530
3810
それぞれの塔がくぼみに保持できる エネルギー量を把握できるでしょう?
02:29
Pause now to figure it out for yourself.
28
149340
9465
ビデオをいったん止めて 自分で考えてみましょう
02:38
Here’s one way of thinking about what’s happening:
29
158805
2830
ひとつの考え方は こうです
02:41
each unoccupied cell will hold energy
30
161635
2915
それぞれの空の箱が エネルギーを保持できるのは
02:44
if and only if there is a wall eventually to its left,
31
164550
4240
その左方にも 右方にも 壁がある場合です
02:48
and a wall eventually to its right.
32
168790
2727
02:51
But it would take a long time for Hedge to check this for each individual cell.
33
171517
4805
でも これを各箱について確認すると 長い時間がかかってしまいます
02:56
So what if he were to consider a whole column of blocks at a time?
34
176322
4863
1列まとめて考えることは できないでしょうか?
03:01
How many units of energy can this hold, for instance?
35
181185
3840
例えば この場合は何ユニット分 保持できるでしょう?
03:05
Pause now to figure it out for yourself.
36
185025
5364
[ビデオをいったん止めて 自分で考えてみましょう]
03:10
Let’s analyze the problem by looking at our example.
37
190389
3370
先程の例で 問題を 分析してみましょう
03:13
There are 5 columns of blocks here.
38
193759
2155
ブロックは5列あります
03:15
The leftmost one can’t hold any energy, because there’s nothing higher than it.
39
195914
4570
左端の列は 一番高いので エネルギーを保持できません
03:20
The 2nd stack can have 3 units above it,
40
200484
2634
2列目は3ユニット分 保持できます
03:23
as they would be trapped between these two 4 block stacks.
41
203118
4126
両側にある4段のブロックに 囲まれているからです
03:27
We get 3 units by taking the height where the energy would level off— 4,
42
207244
4942
エネルギーがいっぱいになる高さ4から
03:32
and subtracting the height of the stack— so that’s 4 minus 1.
43
212186
4160
ブロックの高さ1を引いて 3という答えになります
03:36
The 3rd stack is similar— 4 to the left, 4 to the right, and it’s 3 high,
44
216346
5462
3列目も同様で 左に4段 右に4段あり 高さが3なので
03:41
so it’ll hold 4 minus 3 equals 1 unit.
45
221808
4729
4引く3で1ユニット保持できます
03:46
The 4th stack and 5th stacks have nothing higher than them to the right,
46
226537
4420
4列目と5列目は 右手に自分より高いものがないので
03:50
so they can’t hold any energy.
47
230957
2470
エネルギーは保持できません
03:53
We can adapt this idea into an algorithm.
48
233427
3818
この考え方を アルゴリズムにすることができます
03:57
Considering one column at a time as the point of reference,
49
237245
3780
エネルギー量を求めたい列を基準にして
04:01
Hedge can look to the left stack by stack to find the height of the tallest one,
50
241025
4411
ヘッジは1列ずつ見ていき 左方向で一番高い列を探し
04:05
look to the right to find the height of the tallest one,
51
245436
2720
それから右方向でも 一番高い列を探します
04:08
and take the smaller of the two as the height the energy can fill up to.
52
248156
4677
その2つの低い方が エネルギーを貯められる高さです
04:12
If the result is higher than the column in question,
53
252833
3130
この高さが 列自体の高さよりも高いならば
04:15
subtract the height of the original column,
54
255963
2574
そこから列の高さを差し引きます
04:18
and the result will be the number of units that column can hold.
55
258537
5097
すると その答えが その列に 保持できるエネルギー量になります
04:23
If it's equal to or below the level of the column in question,
56
263634
3560
エネルギーを貯められる高さが 列自体の高さ以下なら
04:27
the energy would spill off.
57
267194
2203
エネルギーはこぼれてしまいます
04:29
Hedge can apply that to an entire basin with a loop
58
269397
3520
ヘッジはループを使って これをすべての列に適用できます
04:32
that starts on the left-most column and moves right, one column at a time.
59
272917
5745
左端の列から右に向かって 1列ずつ調べていくのです
04:38
For each column, he’ll run the same steps— look all the way left for the tallest,
60
278662
5009
列ごとに同じ手順を踏みます
左方向に一番高い列を探し 右方向に一番高い列を探し
04:43
do the same to the right, take the lower height of the two,
61
283671
3560
どちらか低い方から 列自体の高さを引いて
04:47
subtract the original column height,
62
287231
2087
04:49
and increase the grand total if that number is positive.
63
289318
3860
その答えが正の数なら 総和にその分を加算します
04:53
His loop will repeat as many times as there are columns.
64
293178
3670
ヘッジはループを列の数だけ 繰り返します
04:56
That will work, but it’ll take a long time for a large basin.
65
296848
3950
これで上手くいくのですが サイズが大きいと時間がかかります
05:00
At every step Hedge repeats the action of looking left and looking right.
66
300798
4530
ヘッジは各列について左方向と右方向に たどる手順を繰り返すためです
05:05
If there are N stacks, he’ll look at all N stacks N times.
67
305328
4952
列がN個あると N列すべてをN回参照することになります
05:10
Is there a faster way?
68
310280
1980
もっと速い方法はあるでしょうか?
05:12
Here’s one time saver: before doing anything else,
69
312260
3348
ひとつの時間短縮法はこうです 手順を進める前に
05:15
Hedge can start on the left,
70
315608
1860
ヘッジは左端から始めて
05:17
and keep a running tally of what the highest stack is.
71
317468
3870
各列に対する「左側で一番高い列」を 前もって調べておけます
05:21
Here that would be 2, 2 again, since the first was higher,
72
321338
3760
この場合は まず2 最初の列のほうが高いので 再び2
05:25
then 4, 4, 4.
73
325098
2750
それから4、4、4と続きます
05:27
He can then find the highest right-most stacks
74
327848
2780
それから「右側で一番高い列」も調べ
05:30
by doing the same going right-to-left: 1, 3, 4, 4, 4.
75
330628
6254
今度は右から左へ 1、3、4、4、4となります
05:36
In the end he’ll have a table like this in his memory.
76
336882
3840
結果として メモリ上に こんな表が完成します
05:40
Now, Hedge can take one more pass to calculate how much energy there will be
77
340722
5239
それから ヘッジはループをもう一回りさせ さっきと同じ計算式を使い
05:45
above every stack with the same equation from before:
78
345961
4040
各列に保持できるエネルギーを 計算できます
05:50
take the smaller of the stored left and right values,
79
350001
3637
計算済みの左右の高さの 小さい方から
05:53
and subtract the height of the current tower.
80
353638
3070
列自体の高さを引けばいいのです
05:56
Instead of looking at N stacks N times, he’ll look at N stacks just 3 times—
81
356708
5585
N列をN回参照する代わりに N列を3回参照するだけでよく
06:02
which is what’s called linear time.
82
362293
2280
これは線形時間です
06:04
There are ways to optimize the solution even further,
83
364573
3241
この解法をさらに最適化する方法も ありますが
06:07
but this is good enough for our heroes.
84
367814
2750
ここでは これで十分でしょう
06:10
Ethic and Hedge work as one.
85
370564
1770
エシックとヘッジは 力を合わせます
06:14
The first cascade is a breeze, and they rise up the tower.
86
374992
3844
最初の問題は楽勝で 塔を上へと進みます
06:21
The second is a little tougher.
87
381573
2010
2つめは ちょっと手強いです
06:33
The third is huge, with dozens of stacks of blocks.
88
393051
3860
3つめは 大難問で ブロックが何十列もあります
06:36
The timer ticks down towards zero, but Ethic’s program is fast.
89
396911
4433
時間が刻々と過ぎますが エシックのプログラムは高速で
06:41
She gets the wheel in position just in time,
90
401344
2964
ぎりぎりのところで ハンドルの位置を合わせます
06:49
and the energy lifts them to the Node of Creation.
91
409015
2920
エネルギーに乗って 2人は 創造の石のありかへと導かれます
06:55
Like the first, it reveals a vision: memories of years gone by.
92
415640
5427
最初のアイテムの時と同じように映像が現れ 何年も前の記憶が蘇ります
07:01
The world machine changed everything,
93
421067
2120
世界を動かす機械が すべてを変えてしまい
07:03
and Ethic, in her position as chief robotics engineer,
94
423187
3669
エシックはロボット主任技術者として
07:06
grew troubled by what she saw.
95
426856
2050
目にする現実に 不安を感じるようになりました
07:08
When the Bradbarrier went up to keep the people in,
96
428906
3040
そしてブラッドバリアが人々を 囲い込み始めたとき
07:11
she knew something was seriously wrong.
97
431946
2640
何かが決定的におかしいと 気づいたのでした
07:14
So she created three artifacts
98
434586
2090
そこでエシックは 3つのアイテムを作り
07:16
with the ability to restore people’s power, creativity, and memory,
99
436676
4545
「力」「創造性」「記憶」を 人々に取り戻させる力を付与しました
07:21
and smuggled them to three communities.
100
441221
2910
そしてアイテムを3つの共同体に 隠したのです
07:24
Before she could tell people how to use them,
101
444131
2318
人々にその使い方を教える前に
07:26
the government discovered her efforts and sent bots to arrest her
102
446449
3510
政府はエシックのもくろみに気づき
彼女や他のプログラマーを ロボットに逮捕させてしまいました
07:29
and the other programmers.
103
449959
1930
07:31
The last thing Ethic used the world machine to create
104
451889
3320
世界を動かす機械を使って エシックが最後に作ったのは
07:35
was a robot that would protect the ancient device
105
455209
2790
無知の及ぼす力から この古代の装置を守るため
07:37
from the forces of ignorance by enclosing it in a giant maze.
106
457999
4330
それを巨大な迷路に 封じ込めるロボットで
07:42
She named her creation Hedge.
107
462329
2414
そのロボットをヘッジと名付けたのです
07:51
Without warning, the energy lift flickers, then fizzles out.
108
471801
3830
警告もなしに エネルギーの昇降機は 突然消えてしまいました
このウェブサイトについて

このサイトでは英語学習に役立つYouTube動画を紹介します。世界中の一流講師による英語レッスンを見ることができます。各ビデオのページに表示される英語字幕をダブルクリックすると、そこからビデオを再生することができます。字幕はビデオの再生と同期してスクロールします。ご意見・ご要望がございましたら、こちらのお問い合わせフォームよりご連絡ください。

https://forms.gle/WvT1wiN1qDtmnspy7