You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

175 lines
6.0 KiB

WEBVTT
00:00.500 --> 00:01.460
お帰りなさい。
00:01.460 --> 00:08.330
最後のパートでは、 円周率を計算するシンプルなPythonプログラムを効率的なCプラスアルファのコードに変換するという課題にGPTの4人とクローを与えたが、
00:08.330 --> 00:14.630
どちらのフロンティアモデルもうまくいった。
00:15.050 --> 00:21.620
GPT4ではもう少しヒントを出しただけだったが、 次はもっと難しい問題に移る。
00:21.890 --> 00:29.210
このコードは、 Python hardと呼ばれるPythonのコードで、 もうちょっとだけ仕事がある。
00:29.300 --> 00:37.040
最大サブアレイ和と呼ばれるものを計算するんだ。
00:37.040 --> 00:39.170
そして、 これがその結果だ。
00:39.200 --> 00:45.590
つまり、 ランダムな、 あるいは擬似的にランダムな正負の数の配列、
00:45.590 --> 00:49.820
リストが与えられたとする。
00:49.820 --> 00:59.590
この質問で問われているのは、 大きな配列の中にある連続した数字のサブ配列の集合をすべて取り出して足し合わせれば、
00:59.590 --> 01:06.520
その部分の和が得られるということだ。
01:06.520 --> 01:11.920
可能なサブアレイの最大の合計は?
01:11.920 --> 01:17.200
配列の任意の始点と終点を選び、 最大の部分配列が得られるように選び、
01:17.200 --> 01:24.460
その最大の数、 最大の部分配列の数を返す。
01:25.000 --> 01:28.630
そしてもちろん、 ここにはマイナスの数字があることを念頭に置かなければならない。
01:28.630 --> 01:31.690
だから、 明白な答えがあるわけではない。
01:31.960 --> 01:36.820
そして、 このコードが実際に機能する方法は、 単純にすべてを試してみることだ。
01:36.820 --> 01:48.580
ループの中のループで、 開始点をループし、 終了点をループし、 現在の合計と最大合計を比較してその合計を返す。
01:49.330 --> 01:51.340
つまり、 この機能はそういうことなのだ。
01:51.340 --> 01:52.960
それがこのコードの肝だ。
01:52.960 --> 01:55.180
ここにはもう2つのことがある。
01:55.300 --> 02:12.620
Pythonの乱数メソッドやrandomライブラリのようなものは使いたくない。
02:12.740 --> 02:21.530
その代わりに、 ここではごく一般的な、 ごく単純な擬似乱数発生器を実装した。
02:21.530 --> 02:24.890
これは線形合同発生器として知られている。
02:24.890 --> 02:27.680
公式を見たければググればいい。
02:27.770 --> 02:28.670
それが私のしたことだ。
02:28.940 --> 02:45.650
これは、 シードに基づいて予測可能な乱数のストリームを生成する簡単な方法である。
02:46.070 --> 02:55.040
このジェネレーターが乱数を生成する。
02:55.040 --> 03:02.410
フロンティア・モデルにとって、 それをC+++のコードに変換する方法を見つけるのは難しいだろうから。
03:02.410 --> 03:04.330
アプローチしなければならないだろう。
03:04.450 --> 03:09.670
うーん、 簡単には変換できないけど、 円周率関数のようなものは与えられない。
03:09.880 --> 03:12.610
ええと、 これはループの中でループを行うものです。
03:12.910 --> 03:18.760
そして、 これを20回繰り返す。
03:18.760 --> 03:28.810
そして......別のシードで行った20回の合計を取る。
03:28.870 --> 03:37.090
ここでいくつかのセッティングを行うことで、 すべての走行で一貫した走りができるようになる。
03:37.270 --> 03:45.760
ええと、 それからこれを20回やって時間を計っているんだけど、
03:45.790 --> 03:52.570
これも実行しながら話すべきだったかもしれない。
03:52.570 --> 03:56.880
だから、 これから1分間、 どうすれば君に興味を持って待ってもらえるか考えなければならない。
03:57.000 --> 04:04.890
ええと、 繰り返しになるけど、 exacは、 誰かが何かにexacを実行するように言うたびに、
04:04.890 --> 04:07.920
眉をひそめたくなるようなものだ。
04:08.040 --> 04:13.800
でも、 もちろん、 ここで私のコードを注意深く見て、 何も悪賢いことは起きていないし、
04:13.800 --> 04:20.070
数学の束しかないことを自分で納得することができる。
04:20.160 --> 04:23.160
それに、 僕にはイギリス訛りがあるんだ。
04:23.160 --> 04:24.840
それは私が信じられるということに違いない。
04:25.170 --> 04:25.440
ええと。
04:25.440 --> 04:26.010
分かった。
04:26.040 --> 04:28.350
とにかく、 おしゃべりはここまでだ。
04:28.470 --> 04:29.880
ああ、 役目は終わったよ。
04:29.880 --> 04:33.960
たった27秒だったから、 あんなにジャブジャブ喋る必要はなかった。
04:34.110 --> 04:43.110
そして、 全20回を通したサブアレイの最大合計は、 10,980というかなり大きな数字になった。
04:43.140 --> 04:48.780
もちろん、 プラスもマイナスもあり、 そのバランスが取れているからだ。
04:49.320 --> 04:50.460
分かった。
04:50.460 --> 04:57.880
だから今、 GPTにそのバージョンを作ってもらう時なんだ。
04:57.910 --> 04:59.680
今、 そうしよう。
05:05.140 --> 05:12.190
ここでGPTバージョンが登場したので、 それをコンパイルしてみよう。
05:14.140 --> 05:19.030
そして、 暗黙の変換という警告が出た。
05:19.240 --> 05:22.690
そしてそれを実行したところ、 間違った答えが返ってきた。
05:48.280 --> 05:52.060
休憩の後、 クロードがどのようなプレーを見せるか見てみよう。