algorithm

gamma codeを実装してみた

variable-byte(VB) codeに引き続きgamma codeを実装してみた.今度はかなり苦労. というのもVBのように固定長でないため,異なるビット長の結果を詰めて格納していかなければならない.先輩に教わったマスクの作り方(~0ビット列を左シフトして戻ーす,右シ…

Variable byte(VB) codeを実装してみた

なんだかbit-wiseな圧縮手法の実装を練習してみたくてカタカタしてみた. コードは汚いので割愛.結果 4Byte integer -> VB code # 824, 5, 214577を圧縮 before: 00000000 00000000 00000011 00111000 00000000 00000000 00000000 00000101 00000000 000000…

レッツ・チャレンジパソコン甲子園第12回の問題を解いてみた

日経ソフトウェア2008年4月号のパソコン甲子園の問題を解く連載.今回はブラックジャックの手札が与えられた際に点数を返すというもの. とても時間がかかりました.けれど,解法にはそれなりに満足. ブラックジャックルール説明 ブラックジャックは,1〜13…

隣り合う二項の差

どう書く?orgで出題されていた,自分のLisp力でも解けそうな,それでいてLispで書きやすそうなお題をピックアップ 隣合う二項の差 - どう書く?org cdr再帰に凝っている自分としては,ループは再帰で書きたい.まさしくcdr再帰(笑) (defun diff (lis) (co…

コラッツの問題

パソコン甲子園2007年本選の問題 正の整数に対し, nが偶数のときは2で割る nが奇数のときは3倍して1を足す という操作を繰り返すと結果が1になる. 整数nを入力とし,結果が1になるまで繰り返される操作の回数を出力するプログラムを作成せよ. どうやら1に…

NaiveBayesをRubyで書いてみた

前回Perlで書いたMultivariate Berounoulli Naive BayesをRubyで書いた.多重ハッシュがうまく動かず断念.寝て起きて手直ししたらすぐに動いた.謎.さすがRuby,見た目が綺麗(コードは汚いが).Rubyできちんと?プログラミングするの初めてなので,思っ…

Algorithm::NaiveBayes::Simple実装

いきなり思い立って30分プログラミング(終わってみれば30分どころではなかった).Perlらしいオブジェクト指向で,それなりに綺麗に書けた.ただ,データ保持のところが気に食わない.一番簡単なmultivariate bernoulli modelを実装した(単語が文書に現れ…

変形Fizz-Buzz問題

引き続き http://ja.doukaku.org/77/ 一瞬で終わるが,論理否定を取ってしまっているので負け組.達人たちのコードが読めない... まず,mapを使いこなせるようにしないと. コード

あみだくじ

どう書くorgに簡単に解けそうな問題があった. エロと風俗情報満載 どう抜く? splitが思うように動作してくれず,結局s///置換をして,m/./gで一文字ずつ取得した.他人の解答を見て,読み込みながらswapする問題ということに今更気づく. というわけで阿呆…

整数のゲーデル数化

どう書く?orgにあった問題 エロと風俗情報満載 どう抜く? 素数判定のアルゴリズムを忘れた(知らない)ので,しらみつぶしに調べる方法を取った.今思えば,3以上の数については奇数でいいので,3以上の数については奇数だけ調べればよいのか.こういうと…

重複なし乱数

最近手を動かしていないので,寝る前に簡単なコーディングをしたくなる.どう書く?orgを探してすぐに書けそうなものを選んだ. どう書く?org 重複無し乱数 実はアルゴリズムを全然知らない自分は,昔ビンゴゲームをつくるときにオブジェクト向で実装するこ…

ヒープソートで気がついたこと

勉強会に予習なしで参加してしまったので復習。 特筆することはないけれどPascalの場合、配列の添字が1からsizeという表現のため、 二分木の配列表現がC系とは異なるので注意 例えば、array[i]の子要素はよく left: array[i*2] right: array[i*2 + 1]と表現…

アルゴリズムとデータ構造

コーディング力の基礎となる力をつけるべく始めた自主勉強会. 自分で読んだ(予習・復習)分についてメモ アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)作者: 石畑清出版社/メーカー: 岩波書店発売日: 1989/03/30メディア: 単行本購入: 10人 ク…