Python

研究に少し行き詰まったので再帰で遊ぶ

未だに再帰がよく理解しきれていない若輩者なのですが・・・ 研究の気分転換に少し再帰を勉強する。 Algorithms with Python / 再帰定義 で、再帰の何が分かってないかよく分かっていなかったかだけど、根本的に再帰の動作が分かっていませんでした。 そのた…

Numpyメモ(3):Centering matrixが欲しい

と、いう訳で、Centering matrixを生成する。 import numpy def makeCentering(dimension): return numpy.identity(dimension) - 1.0/dimension 例えばdimension=2だとこうなる [[0.5 -0.5] [-0.5 0.5]]以上

Numpyメモ(2):固有値、固有ベクトルが欲しい

linalgを使う。 適当な行列mが定義されている時 >>>import numpy >>>la,v = numpy.linalg.eig(m) laには固有値が、vには固有ベクトル(正確には列ごとに固有ベクトルが並んでいる行列)が代入される。 laのそれぞれの固有値に対応する位置の列に、その固有値…

Numpyメモ(1):単位行列が欲しい

そんなときはidentity()関数を使えばよい。 >>>from numpy import * >>>identity(2) >>>array([[1.,0.], [0.,1.]]) 同様のものにzeros()やones()がある。

scipy

SciPy Tutorial — SciPy v0.13.0 Reference Guide チュートリアルに従って、いろいろ試してみた。メモ mat関数?を使えば行列を定義できる。 mat('[1,2,3;4,5,6;7,8,9]')で3行3列の行列が定義できる。 linalg(LinearAlgebra)をimportすれば、線形代数関係の…

レシピ23:文字列を複製する

Rubyでは、String#dupかString#cloneを使えばよい Pythonでは、Copy()か、=演算子だろうか? # -*- coding : utf-8 -*- import copy str = "This is a string" str2 = copy.copy(str) str3 = str print str print str2 print str3 print id(str) print id(st…

Re:覆面算

ゼミが終わりちょっとだけ時間ができたので…2008-04-10 - rindai87の日記 再び覆面算。 ただ順列を探すだけなので、再帰で書ける。 こういうのをぱっと思いつかないところが自分の実力なんだなぁと思った。 # -*- encoding : utf-8 -*- import sys numList =…

覆面算

全く時間がないくせに、ニューロサイエンス特論で「インテリジェンスに問題を解くんだよ」という例で挙げられてた覆面算が妙に気になってしかたがない。 なので、プログラムを書いてみた。 所要時間5分ほどで書いた思いつきプログラム。 どんだけ力技やねん…

戻った

家に帰宅する。 今日の講義で、インテリジェントシステムの例として、何故か覆面算が扱われていた。 ふと思い立ち、覆面算を解くプログラムを書こうかと思ったが、途中まで書いた段階で重大なミスを犯していることが発覚。 酔っ払いだな。 だめだな。 直す気…

参照

ポインタがないのではない、見えないのだ。 当たり前ですね。 なぜならCPythonだもの。

ワンライナー

RubyでFizzBuzzかけたよ!+いろいろ考えてみた - ミームの死骸を待ちながら経由でちょっとやってみた。 FizzBuzz問題FizzBuzzとは - はてなキーワード 普通に書く for i in range(1,101): if i%3==0: print "Fizz" if i%5==0: print "FizzBuzz" elif i%5==0…

できそうだよーーーー

日本語のファイル検索ができそうだよ〜 一時はあきらめかけたができそうである。 # -*- encoding : utf-8 -*- import re import codecs import sys p = re.compile(sys.argv[1].decode("mbcs")) stList = codecs.open("text.txt", "r", "sjis").readlines() …

大変うれしいお知らせです。

2008-03-11 - rindai87の日記 間違ってたorz やっぱりCよりは簡単だったんだ! 使用者(僕)が無知ゆえにPythonがダメなやつになってるんだ!! id:kminoru氏よりの指摘(初回だけidコールさせてもらいます、すみません) pythonなら10行以内でいけます。 少な…

大変悲しいお知らせです。

Pythonはやっぱり日本語に弱い。 今日それがわかり申した。 日本語をバリバリ扱おうと思うとやはり不利だな、こいつは。 http://python.matrix.jp/tips/string/encoding.html でも、ここらあたりを読むと何とかなりそうな予感。 ファイルからひらがなを読み…

キタコレ

デコレータがわからず悶々としていたが、またまたmorchin氏のコメントに助けられた。 2008-03-08 - rindai87の日記 特に難しい処理はしていません。deco(foo2)で、deco関数をfoo2を引数として呼び出しています。 関数decoは、print ”Hello, world!”を実行し…

特殊メソッド

を使ってなんやらかんやら。 といっても__call__を使っただけだけど。 class Foo: def __init__(self, n): self.x = n def __call__(self, n): return self.x * n def Fooo(n): return lambda x: x*n def main(): foo10 = Foo(10) print foo10(5) fooo10 = F…

デコレータ

やべぇ、まだ分かってねぇ。 そして頭が沸いてきたので今日はここまでにしよう。デコレータの利用 - いろいろ備忘録日記 http://morchin.sakura.ne.jp/effective_python/decorator.html 辺りをつらつら読んだが把握しきれずorz クロージャとかが関係している…

ジェネレータさん

イテレータとジェネレータ。 お気楽 Python プログラミング入門:第4回正規表現とジェネレータ Python にはイテレータ (iterator) という、コレクションから要素を順番に取り出す機能があります。実をいうと、 for 文で要素を順番に取り出せるのは背後でイ…

ソフ開のアルゴリズムの勉強

ソフ開で出題されるアルゴリズムの理解を深めるために実装してみるコーナー。 「スタックを用いて括弧の対応を調べる」開き括弧を見つけると、括弧のある行数と位置をスタックに積む。 閉じ括弧を見つけると、スタックに中身があれば、2回POP()(行数と位置…

あか〜ん

正規表現の続き。 import sys, re f = open(sys.argv[1]) p = re.compile(sys.argv[2]) line = 0 for x in f: line += 1 print "a" print x if p.search(x): print "%d: %s" % (n, x) f.close() これでコマンドラインでファイル名、パターンの引数を与えれば…

正規表現

昨日までとはうってかわって正規表現。 う〜ん、あんまし好きじゃないなぁ。 2回生の時の「オートマトンと形式言語」って講義を思い出す。 死ぬほどつまらんかった まぁいいや。 インスパイヤ先⇒お気楽 Python プログラミング入門:第4回正規表現とジェネレ…

ラムダについて

昨日に続いてラムダについて。 関数内でラムダとローカル変数について。インスパイヤ先⇒お気楽 Python プログラミング入門:第3回再帰定義と高階関数 つまり、関数内で定義されたラムダ形式は、そのとき有効なローカル変数にアクセスすることができるのです…

高階関数

何やらいかつい名前のやつが出てきた。 インスパイヤ先⇒お気楽 Python プログラミング入門:第3回再帰定義と高階関数 Python は手続き型言語ですが、Lisp などの関数型言語のように、関数を変数に代入したり、引数として渡すことができます。また、値として…

typo

完全なるtypoでした。 id:morchinさん、お手数かけました。 def permutation(n, m = 0): def _permutation(n, m, numList): if n == m: print numList else: for x in range(1, n+1): if x in numList: continue numList.append(x) _permutation(n, m + 1, n…

8クイーン

順列ができたので、「8クイーン」⇒お気楽 Python プログラミング入門:第3回再帰定義と高階関数できるんじゃね?ってことで。 順列のコードにその状態を描画する関数drow()をくっつけた。 def queen(n, pos, m = 0): if n == m: drow(n, pos) pos = [] els…

こんな書き方があったのか!

先日の、順列を再帰で書く、というエントリの続き インスパイヤ先↓ 2008-02-26 - rindai87の日記 のid:morchin氏によるコメント(morchinさん、毎度コメントありがとうございます。) > これをグローバル変数使わずに書けないものか思案中。 以下のようにロー…

マージソート

研究やばいんちゃうんか、っていう突っ込みはなしで。 マージソートがひとまず完成した。 一時は自分の力のなさにどうなることかと思ったけど、何とかなるもんだ。 実は参考にしていたサイト↓ Algorithms with Python / 整列 (ソート) でのソースコードがう…

挫折…

再帰も軽く勉強したしマージソートでもやってやろうと思ったけど、思いのほか大苦戦。 結局うまく動かず… なんでだ〜 C言語ならあっさり動くのに…

再帰

クイックソートの一件で、再帰があまり理解できていないことが判明した。 なので再帰を勉強してみる。 インスパイヤ先↓ お気楽 Python プログラミング入門:第3回再帰定義と高階関数 とりあえず、簡単な例で階乗の計算をやってみる。 def rec(n): if n == 0…

scanf()

研究でCのプログラムを書いていて、ふと「Pythonってscanf()がないなぁ」と思った。 んで調べたところ、やはりそのようなものはなさそう。 探した結果、こんなのを見つけた。 Simple scanf-implementation « Python recipes « ActiveState Code 正規表現でご…