プログラマーのように考える 第6話「谷間」
-
0:22 - 0:27エシック、ヘッジ、オクタヴィアは
底なしの谷の縁に立っています -
0:27 - 0:29塔と彼らを隔てる
この谷さえ渡れば -
0:29 - 0:333つの強力なアイテムの
2つめが手に入るのです -
0:33 - 0:38警備ロボットが戻ってくるまでの
短い時間に渡らなければなりません -
0:38 - 0:43ヘッジが燃料切れで
エシックを連れて飛べないので -
0:43 - 0:46橋を作るしかありません
-
0:46 - 0:51幸い 橋の部品となるブロックの山が
近くに浮かんでいます -
0:51 - 0:55オクタヴィアが発明した
浮遊ブロックです -
0:55 - 0:57エネルギーをかけて
ブロックの山を起動させれば -
0:57 - 1:02エシックが歩いて渡れる橋が
自動的に組み上がります -
1:02 - 1:06もちろん 問題もあります
-
1:06 - 1:10浮遊ブロックが安定するのは
完全な回文構造の時だけなのです -
1:10 - 1:14つまり 前から見ても
後ろから見ても -
1:14 - 1:17並び順が同じでなければなりません
-
1:17 - 1:19ブロックは最初ランダムに
積み重なっていても -
1:19 - 1:24可能な限り
回文構造を作ろうとします -
1:24 - 1:27回文構造が作れないときには
-
1:27 - 1:28橋は崩れてしまい
-
1:28 - 1:32上にいる人は
谷底に落ちることになります -
1:32 - 1:33例を見てみましょう
-
1:33 - 1:36このブロックの山は
安定した構造を作れます -
1:36 - 1:39まずAが両端につきます
-
1:39 - 1:40それからBがきて
-
1:40 - 1:44最後にCが
Bの間に入ります -
1:44 - 1:47でもAが
もう1つあったとしたら? -
1:47 - 1:50まずはAが2個
次にBが2個 入りますが -
1:50 - 1:54残ったCとAには
行き場がないので -
1:54 - 1:56全体が崩れてしまいます
-
1:56 - 2:01力の石を使ってヘッジは
ブロックの山を1つだけ起動できます -
2:01 - 2:03エシックがどんな指示を
ヘッジに与えれば -
2:03 - 2:08回文構造を作れる山を効率的に見つけ
起動させられるでしょうか? -
2:08 - 2:18[ビデオをいったん止めて
自分で考えてみましょう] -
2:18 - 2:24回文の例としては ANNAや RACECARや
MADAM IM ADAMなどがあります -
2:24 - 2:27回文の中に各文字が
何度現れるかを数えると -
2:27 - 2:30役に立つ規則性が
見えてくるでしょう -
2:30 - 2:35[ビデオをいったん止めて
自分で考えてみましょう] -
2:35 - 2:38まずは 素朴な解決法を
考えてみましょう -
2:38 - 2:43素朴な方法とは 最適化されていない
単純なしらみつぶしのやり方ですが -
2:43 - 2:45目的は果たせるような
もののことです -
2:45 - 2:48素朴な方法は
問題を分析する役に立ち -
2:48 - 2:52よりよい解決法を見つける
糸口になります -
2:52 - 2:55この場合 素朴な方法は
ブロックの山ごとに -
2:55 - 2:57すべての並び順を試し
-
2:57 - 3:02前からも 後ろからも読んで
回文構造か確かめるというものです -
3:02 - 3:03この方法の問題は
-
3:03 - 3:06とても長い時間がかかることです
-
3:06 - 3:09ヘッジが1つの並びを試すのに
1秒かかるとすると -
3:09 - 3:14異なる10個のブロックからなる山を
1つ調べるのに42日間もかかります -
3:14 - 3:18なぜなら かかる時間は
ブロックの個数の -
3:18 - 3:20階乗に等しくなるからです
-
3:20 - 3:23ブロックが10個なら
3百万以上の並び順があります -
3:23 - 3:27この素朴な方法から分かるのは
もっと速い方法で -
3:27 - 3:31ブロックの山が回文構造になるか
見分ける必要があるということです -
3:31 - 3:34まず 直観的に分かるのは
-
3:34 - 3:37「ブロックが全部違っていたら不可」
ということです -
3:37 - 3:43なぜなら 重複しているブロックがなければ
両端のブロックが同じになり得ないからです -
3:43 - 3:49では 回文構造になり得るのは
どのような場合なのでしょう? -
3:49 - 3:53いくつかの回文を分析することで
答えを見つけることができます -
3:53 - 3:56ANNA には Aが2個
Nが2個あります -
3:56 - 4:01RACECAR には Rが2個
Aが2個、Cが2個、Eが1個 -
4:01 - 4:08MADAM IM ADAM には Mが4個
Aが4個、Dが2個、Iが1個です -
4:08 - 4:09ここで見られるパターンは
-
4:09 - 4:13ほとんどの文字が偶数回
現れているということです -
4:13 - 4:16そして1回しか現れない文字は
あっても1つだけです -
4:16 - 4:17それだけでしょうか?
-
4:17 - 4:20RACECAR にEが1個でなく
3個あったとしたら? -
4:20 - 4:24増えたEを両端につければ
また回文構造になるので -
4:24 - 4:263回現れてもOKです
-
4:26 - 4:32でも Eが3個で Cも3個なら
最後のCの行き場がなくなります -
4:32 - 4:35ですから 一般化した考え方は
-
4:35 - 4:39奇数回現れる文字は
多くて1個で -
4:39 - 4:42残りの文字はすべて偶数回現れる
ということです -
4:42 - 4:46ヘッジはブロックの山ごとに
文字の出現回数を数えて辞書の形に整理でき -
4:46 - 4:49これは上手い情報格納法です
-
4:49 - 4:54ここでループを使って
奇数が何度現れるかを数えます -
4:54 - 4:59奇数回現れる文字が2個未満であれば
そのブロックの山は回文構造にできます -
4:59 - 5:03このやり方は 素朴な方法よりも
ずっと速く実行でき -
5:03 - 5:06文字数の階乗時間ではなく
線形時間しか かかりません -
5:06 - 5:09つまり ブロックの数に
比例した時間しか -
5:09 - 5:11かからないということです
-
5:11 - 5:13ヘッジがそれぞれの山を分析して
-
5:13 - 5:17回文になるものを見つけ次第
やめるようなループを書いたら -
5:17 - 5:19準備は万端です
-
5:19 - 5:20さて どうなるでしょう
-
5:20 - 5:24ヘッジは素早いものの
山がたくさんあって手間取り -
5:24 - 5:26時間がかかりすぎました
-
6:18 - 6:20エシックとヘッジは無事でしたが
-
6:20 - 6:22オクタヴィアは
運が悪かったようです
- Title:
- プログラマーのように考える 第6話「谷間」
- Speaker:
- アレックス・ローゼンタール
- Description:
-
アニメシリーズ『プログラマーのように考える』の第6話。全10話から成るこのシリーズは、エシックという女の子とロボットの相棒ヘッジが世界を救うために頑張るお話です。2人は3つのアイテムを集める冒険に出発しますが、その途中プログラミングのパズルを解きながら進まなければなりません。
講師:アレックス・ローゼンタール 監督:Kozmonot Animation Studio
*このビデオの教材:https://ed.ted.com/lessons/the-chasm-think-like-a-coder-ep-6 - Video Language:
- English
- Team:
- closed TED
- Project:
- TED-Ed
- Duration:
- 06:24
Moe Shoji edited Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki approved Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki accepted Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki declined Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki edited Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki edited Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Moe Shoji edited Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 | ||
Yasushi Aoki declined Japanese subtitles for The Chasm | Think Like A Coder, Ep 6 |