algorithm

Re: 一番右端の立っているビット位置を求める「ものすごい」コード

http://d.hatena.ne.jp/siokoshou/20090704#p1 すごいなあ。いろいろ応用が利きそう。 うろ覚えながら M 系列実装してみる。とりあえず 6bit目と 1bit目の出口をフィードバックしてみる。 def M(n, q = 6, p = 1): nm = 2**n-1 m = [0] * nm + [1] for j in …

Tower of Hanoi

尊敬する友人が「Higher Order Perl」を買って読んでる、という話を聞いた。僕はHOPは「なんとなくめんど草そー」というか難しそうだったので避けてたんだけど、いい機会だから勉強してみようと買ってみる。こないだとどいた。最初と2つ目はすげー単純な10…

圧縮アルゴリズム or 暗号アルゴリズム

なぜか文芸的プログラミングを読んでいたら 圧縮か 暗号の勉強をしたくなってきた。 ので可変長ビットいじるものをrubyでなんとなく作ってみた。 class Bit include Math attr_accessor :value, :bits def initialize(value=0, bits=0) if bits == 0 and val…

traverse

普通に Treeの traverse って下で作ったようなのしか知らなかったんだけど、cuzicさんにpreorder, in-order, postorderがある事を教えてもらった。 def _traverse_inner(self, node): if node is None: return # << preorder self._traverse_inner(node.left…

BST

BinTreeを使ってそーと。quicksortを逆にやっているのと同じになるらしい。面白い。 やってみる in python class Node(object): def __init__(self, value, left=None, right=None): self.value = value self.left = left self.right = right class binarytr…

hash関数

出掛けにセジウィックのアルゴリズムCを見たら、「ハッシュ表のサイズは素数にして、文字列を超多倍長数としてみる」ような恐ろしげな方法が載っている。いやなのでその辺のソースに頼ってみよう。 perl-5.8.8/ hv.c : l.381 STATIC HE * S_hv_fetch_common(…