Archives of learned topics

Lessen6-7:Extend Prefix

ポイント ・再帰検索時の検索結果の格納 再帰を用いた検索で、各末端での検索結果を最上段の関数に返す場合は、基本的にreturnを使用して値の返しを行う。 def foo(x): if x > 100: return x else: return x + foo(x + 1) しかし、ひとつの関数で複数の結果…

Lesson1-25:Allmax

ポイント keyでFunctionを指定する際に、初期入力がNoneの時の対象法 Key指定時の注意点 pythonにおいてmax(a, key=function)など、基準として関数を指定することが可能。 このような関数を独自で実装するとき、key指定がない場合のfunctionをどうするかが問…

Lesson1-7:UsingMax

今回のポイント MaxはKeyにFunctionを指定することが出来る。指定されたFunctionは最大値算出時にMapのように一つずつ値を算出し、比較をしすることで最大値を算出する。 例 def poker(hands): "Return the best hand; poker([hand, ...]) => hand" return m…

Lesson1-3:Outlining The Problem

はじめに Design of Computer ProgramsのLesson1-3についてまとめる。 ここでの目標 今回作成するのは、ポーカーの手札を複数引数として取り込んで、そのなかから一番いい手を返すプログラム。

Dependency Injection

はじめに Dependency Injectionについて自分なりにまとめてみる。 (Dependency Injection コンテントにつていは記述していません。) 修正箇所があれば、Updateをしていく。 そもそも Dependency Injection(DI)をWikiで調べてみると… コンポーネント間の依存…

Problem set 4-2:More Pour Problem

目次 問題の説明 ポイント ソース 問題の説明 PouringProblemの拡張版を今回は作成する。 前回の(PouringProblem)jsakusan.hatenablog.comは、2つの容器を使用した場合で解決方法を探索した。 しかし、今回は容器の数をフレキシブルに変化可能にする。 容器…

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…

Lesson 4- 17: Calculating Costs

下記の定義のようなTupleがあり、最後から2眼目のtotal_costが欲しい。 この場合、一旦変数にいれてやると、可読性が上がる。 tupleの定義 path = [state, (action, total_cost), state, ....] コード def path_cost(path) if len(path) < 3: return 0 else…

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…

【Python】複数代入について

複数代入とは下記のようなことを言っているつもりです。 >>a, b = 1, 2 >>a 1 >>b 2 複数の変数に一行の式で代入が行えること。 スワイプが一行で書ける!! int a = 1; int b = 2; int temp = a; a = b; b = temp; System.out.print(a + "," + b) と記述す…

Pythonでのメモリ使用状況をリアルタイムで表示(初級)

Pythonプログラムのメモリ使用方法(初級)をurseraの講座で解説していたので、メモしておく。 使用サイト ・ Python Tutor - Visualize Python, Java, JavaScript, TypeScript, Ruby, C, and C++ code execution -> リアルタイムでメモリの使用状況が分かる…