Archives of learned topics

Design of Computer Programs

Lesson4-26:Cleaning Up Mc Problem

引数の値に応じて、関数を指定したい時のコードの書き方の話。 下記の様なコードがあった場合、 def mc_problem(start=(3, 3, 1, 0, 0, 0), goal=None): if goal == None: goal_fn = lambda state: (0, 0, 0) == state[:3] else: goal_fn = lambda state: go…

Lesson4-4: Pouring Problem

目次 問題のイメージ 実装 問題のイメージ 良くありがちな、二つの容器を使用して特定の分量を測定してくださいという問題。 問題を解く方向性としては、探索問題となる。 既に探索した領域を記憶し、新たな領域を探索するイメージ 実装 def pour_problem(X,…

Problem set 3: 2_Quiz_Inverse_Function

目次 Inverse Functionとは 実装 逆算法 2分探査 Inverse Functionとは まずは、関数の定義から見てみる。 あるy = f(x)に対して、xを求めるようなf'(y)のことである。 ex) f(x) = x ** 2 f'(x) = sqrt(y) こんな関数を実装していく。 実装 逆算方 f(x)を0…

7-35. Trace_Tool

目次 これまでに作成したデコレータ Trace Tool これまでに作成したデコレータ DEBUGGING TOOL countcall trace <- New!! PERFORMANCE TOOL memo EXPRESSION TOOL n_ary Trace Tool 関数の実行のされ方がVisualizeされるデコレータ。 --> fib(6) --> fib(5) …

7-33. Quiz: Cache Management

目次 MEMO化について MEMOのデコレータ Hash TableにListは入れられない?? MEMO化について C101においても、プログラムの高速化にメモ化を使用する場面があった。コードは下記のようである。 memo = {} def fib(n): if n in memo: return memo[n] else: me…