ようこそ。睡眠不足なプログラマのチラ裏です。

アルゴリズム

マルコフ連鎖とビタビアルゴリズム(HMM)を F# で。

元ネタ昼食時に店で流れていた、大事MANブラザーズバンド「それが大事」の歌詞が、あまりに繰り返しばかりなので、状態遷移図を作りました。どうぞご利用下さい。 http://youkoseki.com/soregadaiji/ 「それが大事」にマルコフ連鎖を適用してみる https://ww…

F# Implementation of BackPropagation Neural Network for Pattern Recognition(LifeGame)

この記事は、F# Advent Calendar 2011の21日目です。 きっかけは、11月19日に札幌で行われた第64回CLR/H勉強会で、愛甲健二さん(@07c00)がお話してくれた「コンピューターに萌えを教えてみたよ」というセッションです。「アダルトサイトの検知」のメカニズム…

F#でsleep sort

追記しました 元ネタは、以下あたり。 常識を覆すソートアルゴリズム!その名も"sleep sort"! - Islands in the byte stream http://d.hatena.ne.jp/gfx/20110519/1305810786 Sleep sortの各言語での実装まとめ – Yuyak http://www.yuyak.com/1339 ただいま…

「ハッカーのたのしみ」はかなりの良書。いまさらFlagsAttributeのレシピ、リターンズ。.NET FrameworkにBitCountくらい標準であってもいいのにね

以前、FlagsAttributeとビット演算のちょっとしたレシピという記事を書きました。 ご覧頂くとわかるように、とてもダサい実装になっています。記事を掲載してすぐに知人からツッコミがありました。 ツッコミがあったときにすぐに続編記事を書いて訂正しよう…

迷路の生成とその解

パラドックス大全 - 世にも不思議な逆説パズル 著:ウィリアム・パウンドストーン 訳:松浦俊介 という本を読了しました。冒頭の水槽の脳の話から最後まで楽しく読めました。 その中で、NP完全と迷宮の話がでてきまして、大変興味をそそられました。 プログ…

レーベンシュタイン距離とN-gramモデルのアルゴリズム。それは擬似Google Suggestっぽい何か。

きっかけはレーベンシュタイン距離 - shin5papaの日記 http://d.hatena.ne.jp/shin5papa/20090311/1236745197 レーベンシュタイン距離とN-gramモデルで、擬似的なGoogle Suggestレーベンシュタイン距離を使うことによって、擬似的にGoogle先生の「もしかして…

拡張ユークリッド互除法も再帰で書いた方が自然に見える

最適化のために最大公約数を求める必要があって、 ユークリッド互除法と拡張ユークリッド互除法を書いたので、チラ裏に残しておく*1。 ユークリッド互除法まずはよく見る実装をC#で public static int Gcd(int a, int b) { while (b != 0) { int r = a % b; …

C#で順列(Permutation)と組み合わせ(Combination)をすべて列挙してみよう

さて、いきなり少年メリケンサックですが、気にしないでください。帰らないでください。内容はまともです。 C#で順列(Permutation)を列挙する実装については、割と書いている人がいます。 でも、組み合わせ(Combination)を列挙する実装は、あまり書かれてい…

モテようとして、C#でXOR使ってリバースしている奴がいたんですよ

いろいろなリバースのアルゴリズムを見てみましよう。 まずは表題のリバースのアルゴリズムについて、どうぞ。なんとなくモテようとしている感のあるリバースモテようとして、C#でXOR使ってリバースしている奴がいたんですよ・・(以下略)。 こんな感じで pub…

IEnumerableをシャッフル!

ネタ元:id:kawatanさんのエントリより http://d.hatena.ne.jp/kawatan/20081210 IEnumerableを実装していれば何でもシャッフルって、素敵ですね〜。 カードゲームなんか作るときにサクッと利用できちゃいますね。 よいものは盗んじゃおう!ということで、さ…

いまさらC#でライフゲームを書いてみた

どう書く?orgにて、C#で既に書いてらっしゃる方が多数おられますが、 どうもコードを短くすることに重点を置いて書いているような感じで、正直なんだか読みにくいなーと思い・・・。 冗長だけどわかりやすく、オブジェクト指向っぽくライフゲームを書いてみ…

続・ラムダとY Combinatorと私。VBだって、やれば出来る子!

というわけで、前回のC#3.0で書いたラムダとY Combinatorと私。Y Combinatorは恐ろしい子。について、 VB2008のラムダ式でも書いてみました。VBだってやれば出来る子なんです(´・ω・`) Imports System Imports System.Linq Imports System.Collections.Gene…

ラムダとY Combinatorと私。Y Combinatorは恐ろしい子。

再帰的な関数を作る場合に、その関数に名前をつけずに定義するにはどうすればよいの?*1 というのがY Combinatorの中心的話題のようだ。 つまり、不動点演算子を用いると、ラムダ式で再帰表現できるというお話。 f(x) = x なる x が不動点となるのであった。…

数値をアルファベット(26進数ぽ)へ変換、それはExcelのカラム名的な何か。

Excelをごにょごにょしていると、Excelの79列目のカラム名が「CA」だとかってのを、 取得したくなることがある。そんなときのためのブツ。こーゆーのは再帰でうまく表現できますね(^ω^) using System; using System.Collections.Generic; using System.Linq;…

Project Euler第1問目

Project Eulerはじめました。(冷やし中華的な意味で) 問題 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 100…

いまさら聞けないアルゴリズム その1「ハノイの塔」 Part.2

前回に引き続きまして、Haskell版「ハノイの塔」も書いてみた。 {-ハノイの塔-} main :: IO () main = putStr $ concat $ [write x | x <- hanoi "A" "B" "C" 3] hanoi :: String -> String -> String -> Int -> [(String, String)] hanoi _ _ _ 0 = [] hano…

いまさら聞けないアルゴリズム その1「ハノイの塔」

なんの変哲もないC#で書いた「ハノイの塔」です。 それ以上でもそれ以下でもありません。もちろん模範解答というわけでもない。 using System; using System.Collections.Generic; namespace ConsoleApplication1 { public class Program { private static v…