見出し画像

無償のプログラミング入門講座CS50xをやってみる Week3

全体の感想

今週はレクチャー動画の視聴を休日にすましておいたので、仕事の昼休みに多少問題を進めることが出来ました。関数の実装単位であれば作業を区切ってもよさそうなので、来週も同様に昼休みに進められる箇所は進めていこうと思います。

レクチャー動画(2.5h)

結構盛沢山でした。ソートの種類を物理的に数字のオブジェをソートしながら解説しているのが非常に良かったです。今までもビジュアルでわかるソートアルゴリズムと言ったWebページを見たことはあったんですが、不思議と人間が手で並べているのを見る方が分かりやすかったです。

Lab 3(0.5h)

選択ソート、バブルソート、マージソートが実装されたバイナリファイルと、ソート済み、逆順でソート済み、ランダムファイルが配られるので、timeで実行しつつどのバイナリファイルがどのソートアルゴリズムなのかを当てる問題。

これまでのようにプログラミングするわけでなく、新鮮で面白かったです。3つしかファイルがないので、ソート済みファイルで早いソートと、ランダムで早いソートが分かれば、残りは考えるまでもないんですが一応選択理由をひねり出したりしました。また、回答理由を英語で書かないといけないので、DeepLに頼りきりでした。

Plurality(0.5h)

多数決投票のプログラムを作成する問題。

ほとんど完成しているソースコードが提供されるので、関数を2つ書くだけで比較的簡単にできました。

Tideman(5.5h)

今回も「プログラミングに自信がある場合」の問題を選択しました。毎度途中で難しい方を選んだことを後悔するんですが、一週間たつと忘れてしまうんですよね。おそらくひとつ前の問題がスルッと解けるから変な自信がついてしまうんだと思います。

Tideman選挙という、候補者を好きな順番に並べて投票できるシステムを実装する問題です。

まずまず、Tideman選挙と言うのが理解できずに問題文を3回ほど読み直しました。こちらも、「Plurality」同様ソースコードが提供されているので関数を実装していくのですが、その数6個。
しかも、後半の方は解説が非常に簡素になっていくのでどういう関数を書けばいいのか整理するのに結構時間がかかりました。こういった時には図などをノートに書きながらコードに落とし込んでいくのが良いと思います。

テストケースが少ない上に、あまり書いたことのない再帰関数を書く必要があったのでテスト「check50」が通らなかったら、簡単な方に乗り換えてやろうとか思ってましたが、何とかクリアすることが出来ました。

スコア

画像1


先週分


この記事が参加している募集

振り返りnote

この記事が気に入ったらサポートをしてみませんか?