学ぶ
基礎から並べ替え・再帰までは、どの言語でも同じ順番で学びます。ポインタやクラスのように一部の言語にしかないものは、その言語で学びます。各単元で言語をすぐ切り替えられます。
基礎
4 単元制御フロー
4 単元データ
5 単元関数
2 単元さらに先へ
10 単元- 16辞書(マップ)キーで値を探して更新する:単語を数える、あるか確かめる、キー順に回る。
- 17並べ替え(ソート)小さい順、大きい順、自分で決めた基準で並べる。
- 182次元リスト(グリッド)行と列のグリッド:読み込み、行の合計・列の合計、範囲内だけで隣のマスを見る。
- 19文字列の操作切り出し、検索、置換、前後の空白除去、比較、桁そろえ。
- 20整数と浮動小数点数0.1 + 0.2 が 0.3 にならない理由、小数の桁そろえ、丸めのルール、整数のオーバーフロー。
- 21再帰関数が自分自身を呼びます。基底条件、呼び出しスタックの深さ、ループとメモ化まで。
- 22よくある間違いとエラーメッセージエラーメッセージの読み方と、どの言語でも出る間違い:1 つずれ、= と ==、整数の割り算、null、範囲外の添字。
- 23絶対値・累乗・平方根符号を取る、何度も掛ける、2乗するとその数になる値を求める。
- 24数える・累計・グループ化一度たどりながら、条件に合うものを数え、ここまでの値を持ち歩き、キーごとにまとめます。
- 25レコードのリストと列挙型レコードをリストに集め、決まったいくつかの値には名前を付けます。
アルゴリズム
8 単元- 26シミュレーションと全探索話のとおりに一歩ずつ実行し、候補を一つも飛ばさずに試します。
- 27スタックとキュー後から入れたものを先に出すスタック、先に入れたものを先に出すキュー。
- 28二分探索整列された範囲を半分ずつ捨てて、値や、条件を最初に満たす位置を見つけます。
- 29累積和と尺取り法区間の和を引き算1回で求め、二つの位置を前にだけ動かして区間を探します。
- 30最大公約数・素数・進数余りで最大公約数を求め、篩で素数をふるい分け、数を別の進数で書きます。
- 31貪欲法と優先度付きキューその場でいちばん良さそうなものを選び、いちばん小さい値をすぐに渡してくれるキューを使います。
- 32グラフと深さ優先探索誰と誰がつながっているかを書きとめ、行ける所をもれなくたどります。
- 33幅優先探索とトポロジカルソートキューで近い所から広げて最少の歩数を求め、先にやることが前に来るように並べます。
言語ごとの特徴
10 単元- 34ポインタC++ · C値のある場所(アドレス)を持ち歩き、呼び出し側の変数を書き換えます。
- 35動的メモリC++ · C実行中に決めた大きさだけメモリを借り、使い終わったら必ず返します。
- 36構造体C# · C++ · C関係のある値を一つにまとめ、そのまとまりがコピーされるのか共有されるのかを知ります。
- 37クラスとオブジェクトPython · JavaScript · TypeScript · Java · C# · C++データ(フィールド)と動作(メソッド)をひとつの型にまとめ、その型からオブジェクトをいくつも作ります。
- 38インターフェースとジェネリクスTypeScript · Java · C#インターフェースで「このメソッドがある」という約束を決め、ジェネリクスでひとつの関数をいろいろな型に使います。
- 39LINQ とストリームJava · C#絞り込み・変換・グループ化・並べ替えを、ループの代わりにひと続きのパイプラインで書きます。
- 40Python らしいコードPython内包表記、ステップ付きのスライス、アンパック、enumerate・zip、in、f 文字列、そして3つの落とし穴。
- 41JavaScript の等価と真偽JavaScript · TypeScript== と ===、falsy な値、?? と ||、すべて double の数、undefined と null、そして TypeScript が防いでくれること。
- 42C++ の参照と STLC++& 参照と const 参照、vector・map・set・unordered_map、ラムダを受け取るアルゴリズム、そしてコピー・無効化・自動挿入の落とし穴。
- 43Craykon ならではのきまりCraykon母語で書けるキーワード、計算を止める「なし」、厳密な ==、下へ流れない選択。