2011-08-01から1ヶ月間の記事一覧

wikipediaの各記事における重要な語を抜き出す

wikipediaのある記事に対して、その記事を特徴付けるような語を抽出したい。 まずは、単純にTF(term-frequency:単語の出現頻度)を用いた方法。 まず、事前準備として解析対象となる記事を取得する。(記事を指定する場合) http://en.wikipedia.org/wiki/S…

逐次検索

逐次検索。 #! usr/bin/env python # -*- coding: utf-8 -*- #sequential_search.py dict = {"Ann":18,"Rolla":19,"Nancy":16,"Eluza":17,"Juliet":18,"Machilda":20,"Emy":15,"Candy":16,"Ema":17,"Mari":18} word = raw_input("Whose age? : ") N = len(di…

直接選択法によるソート

直接選択法によるソート。 N番目〜末尾のリストに対して最小値を先頭に持っていくことを繰り返す。 最小値を求める関数search_min()を定義して使いたかったので メインの関数、direct_sort()が逆に汚くなった。 #! usr/bin/env python # -*- coding: utf-8 -…

文字列と数値の取り扱いでハマったこと

ハマったことのメモ。 まずは、これをご覧ください。 8理由は保留として、とりあえず['8','45']を[8,45]にしたい。 A = ['8','45'] for a in A: a = float(a) print A で、できない。代入をミスってることに気づいた。 #! usr/bin/env python # -*- coding: …

2分法

#! usr/bin/env python # -*- coding: utf-8 -*- #nibunhou.py import random import math def f(x): return x*x*x - x +1 a = float(raw_input("set a as f(a)>0 : ")) b = float(raw_input("set b as f(b)<0 : ")) det = math.fabs((a-b)*1.0 / a ) if mat…

素数を求める。エラトステネスのふるい 

素数を求める。 まずは素数かどうか判定するプログラム。 #! usr/bin/env python # -*- coding: utf-8 -*- #prime.py f = raw_input("Judge if prime number: ") a = range(2,int(f)/2+1) judge = "prime" for x in a: if int(f) % x == 0: judge = "not pri…

ユークリッドの互除法

最大公約数を求める。 #! usr/bin/env python # -*- coding: utf-8 -*- #euclidian1.py m = int(raw_input("Set m : ")) n = int(raw_input("Set n : ")) while m != n: if m >= n: m = m-n else: n = n-m print "GCC = ",m n>nの時有効。 #! usr/bin/env py…

モンテカルロ法

モンテカルロ法で円周率πを求める。 このページとかが参考になる。 http://www.f.waseda.jp/takezawa/math/number/Pi/monte.html #!usr/bin/env python # -*- coding: utf-8 -*- #montecarlo.py import sys import random N=raw_input("input trial number :…

ランダムな順列

乱数を使ってランダムな順列を得る。 その前にpythonで擬似乱数を得る方法について。 >>> random.randint(1, 10) # Integer from 1 to 10, endpoints included 7 はじめに効率の悪い方法。 アルゴリズムは、 (1)1~Nの乱数を1つ得る。これを順列の1番目のデ…

順位付け

#!usr/bin/env python # -*- coding: utf-8 -*- #ordering.py import sys from collections import defaultdict data = [56,25,67,88,100,61,55,67,76,56] order = 0 i=0 d= defaultdict(int) for datum in data: for dat in data: print i #if dat == data[…

排他的論理和(XOR)による暗号解読

文字のアスキーコードの特定ビットを 排他的論理和に従ってビット反転する。N→0x4E→ 01001 110 ↓ビット反転(XOR) I←0x49 ← 01001 001pythonの文字コード勉強してからやる。 http://www.kabipan.com/computer/python/unicode.html

対応表による暗号解読

Table="QWERTY...NM" を用意する。 (問題) A→Q,B→W,C→E,...のようにqwerty配列で変換する。 このとき、暗号文字"KSOIDHEPZ"を複合する。 (コード) #!usr/bin/env python # -*- coding: utf-8 -*- #qwerty.py import sys tables = "QWERTYUIOPASDFGHJKLZX…

ヒストグラム(度数分布)

#!usr/bin/env python # -*- coding: utf-8 -*- #histogram.py import sys import random from collections import defaultdict points = [5,24,34,36,38,42,50,57,66,66,71,73,74,76,77,80,80,89,97,100] random.shuffle(points) d=defaultdict(int) for po…

Pascalの三角形

コンビネーションのコードを応用して Pascalの三角形を構成する。 コード #pascal.py #!usr/bin/env python # -*- coding: utf-8 -*- import sys #calculate the combination (n,r) num = raw_input("Set n: ") for k in range(int(num)+1): print " " * (in…

Hornerの方法

べき級数の計算 普通に計算すると掛け算の回数は の項で n(n+1)/2回(等差級数) の項で n回 足し算は n 回Hornerの方法で計算回数を落とす。f(x)を以下のように変形する。 以下の漸化式を定義する。 計算回数はn回の掛け算とn回の足し算になる。以下がコー…

コンビネーション

漸化式を利用したコンビネーションの計算 #combi.py #! usr/bin/env python # -*- coding :utf-8 -*- import sys #calculate combination (n,r) num = raw_input("Set n: ") repeated = raw_input("Set r: ") if num < repeated: print "input error" #Recur…

シンタックスハイライトと数式の表示(tex)

シンタックスハイライト http://d.hatena.ne.jp/hatenadiary/20061215/1166155734 ハイライトさせたいファイルタイプを、行頭の >|| の2本のパイプ( || )の間に指定する。 (例) >|python| import sys ham=null,egg=null print ham,egg < と書く。 import…