wvogel日記

自分用の技術備忘録が多めです.

2012-01-01から1年間の記事一覧

GA

最近javascriptとかC#ばかり書いていたので、久々にHaskellで遺伝的プログラミングをしてみた。遺伝的アルゴリズム こちらのサイトを参考にして、 関数の最大値を見つけてくるようなものを作成しました。ココにソース置いてます。何度か実行してみた結果、淘…

画像処理

衝動的に、画像を生成したくなったので。 PGMファイルを使って、図形を描画してみました。画像の大きさは100*100として、次のように値を設定しました。 poses = [(x,y) | x <-[1..width] , y <- [1..height]] width,height :: Float width = 100 height = 10…

Functional Lensとは?

友人曰く、functional lensなるものがあるらしい、調べよ! との事で、調べてみた。Lenses←ここの記事が参考になりました。 読んだところ、C#でいうところの、get,setと同様の機能をより関数型に実装したものがLensのようです。例えば、あるデータを一まとめ…

Free Monadで料理を記述する

ここ数日、Why free monads matterの記事を読んでいました。 非常に簡単にモナドを構成できるのはわかったけれど、 これで何が嬉しいのかよくわかりませんでした。 で、記事を読み進めていくうちに、手続き自体の構造を記述するのに非常に便利なのではないか…

Aitken加速

Aitken加速を書いてみた。 短いのでコードはここに掲載 module Aitken where a n = foldl (+) 0.take n $ map term [0..n] term k = (-1)^k/(2*fromIntegral k+1) --収束率 --lambda n = (a (n+2) - a (n+1)) / (a (n+1) - a n) --極限値 aitken n = a n - (…

wxHaskellでゲームを作る

ここ最近ずっと、wxHaskellでゲームを作っています。 ノベルゲームの作成で、マウスのクリック位置や画像描画の大体がわかったので、今回は直接描画などを目標として、 簡単なシューティングゲームを作ることにしました。まだ製作中なので完全ではありません…

焼きなまし法

最近加速アルゴリズムや最大値発見アルゴリズムを勉強しているのですが、ちょっと思い立って、Haskellで焼きなまし法を書いてみた。とはいえ、動作を確認したかっただけなので、 こちらのブログを参考にさせてもらい、そのまま書き下しただけですが。 ソース…

制作中.....

wxHaskellのtutrialに、bouncing ballというのがありますが、 これを見ると、タイマーイベントや入力を通じたイベントで、 Graphicオブジェクトに対して割合簡単に処理を記述出来るよう。また、tutrialで気になったVarて何だろう、思って調べてみたら、IORef…

F# on Fedora

F#

大学の講義で夏休みの課題がまた出されたのだが、 生憎テスト終了から提出期間までの間は確実に避暑 in hospitalなので、どうも凝ったレポートは作れそうにない (さすがに病室で錫と鉛を溶かすのはよろしくないと思う)そこで、その課題をHaskellかF#で製作す…

wxHaskellテキスト処理

最近滞ってしまっていた.... 今、大学の実験課題をHaskellでやっていいよと言われたので、カリカリ作業しているところです。 ネットワークシミュレーション、ダイクストラ、そして現在制作中の統計処理と、3つの課題のうちダイクストラ以外はHaskellでやって…

Glossに触ってみた

OpenGLで、昔高校で流行ったチャリ走もどきを作ってみようと思っていたのですが、 今日、Glossなるライブラリがあることを知ったので、 これはOpenGLより使いやすそう! ということで。 さっそく使ってみた。wikiなどを参考に、まずは画面表示。 文字描画、…

ソケット通信...case ofにはまった

Haskellでソケット通信! どのようにやるのか、ネットワークにはてんで疎いので、 yasuabe blog を参考にさせてもらいました。まずは一度丸写しして、どのように動作するのか確認。 2回生の時に講義でやった、javaでの通信ポーカーゲームに似ています、とい…

git branch

長らくこのブログも放置してしまっていた... 大会・合宿・旅行と、家にいなかったので。 さて、職場でソースコードの管理にgitを使っているのですが。 「これ使ってねー」 と言われたgitGUIが....使い辛いよ!!FedoraではCUIで操作していることもあって、 …

画像描画 高速化

というわけで。 高速化を試してみました。 まず、read関数はコストが大きいらしいので、これをfromIntegralに置き換え。 また、preservingMatrixを消してやることで1秒近い時間短縮に成功。 そこで、一度、画像ロードにかかる時間、 及び、画像描画にかかる…

画像描画 with OpenGL

入院初日。 試験からも寄席からも開放され、しばしの休息。 というわけで。 久々にHaskell!! やりかけになっていた、OpenGLを使ってHaskellでの画像描画実行結果 ソースコードはこちら の、 ・Gui.hs ・Interface.hs ・ImageReader.hs の3ファイルただ。た…

貪欲法基礎

これも同じく、蟻本P.43に掲載されていた問題。 仕事の終了時間、開始時間のデータセットが与えられたとき、 最多でいくつの仕事を行えるか、というもの。 module TimeScheduling where import Data.List s = [1,2,4,6,8] -- 仕事の開始時刻 t = [3,5,7,9,10…

POJ No.2386

蟻本P.35に掲載されていた問題。 要は、二次元配列で渡されたマップ情報を読んで、近傍8座標で繋がっている領域数の数え上げ。ソースコードはこちら(x,y) -> (0,0),(0,1).. のように、順に横方向に探索をかけ、領域が存在したら、 その近傍4点に関して再帰的…

Game販売

どうしてこうも忙しいのだろう。 まず、試験ラッシュが二月の第Ⅰ、2周にあるのでそれの試験勉強があり、 入院しているのでレポート提出がたまり。 学業の方はそれくらいですが。同じく入院している固めに、落語研究部の仕事が遅々として進まず。落語の練習も…

Peggy練習(2)

昔同好会で友人が作ったゲームエンジンのスクリプトパーサーのようなものを書いてみた。 とはいっても、細かいことは覚えてないのだけれど。mes("発話者","発言内容"); img(レイヤー番号,x座標,y座標,"ファイル名"); のような感じだった記憶がある。また、背…

Peggy練習

数ヶ月前に遊んで以来全く触っていなかったのですっかり忘れてしまった.... 思い出そうと思って、Peggyチュートリアルにある数式パーサに、べき乗演算を追加したものを書いてみる {-# Language TemplateHaskell,QuasiQuotes, FlexibleContexts #-} import Te…

Knapsack問題

Haskellでナップザック問題。 import Data.List type Value = Int type Weight = Int type Product = (Value,Weight) main = do capacity <- getLine n <- getLine cs <- getContents print.knapsack (read capacity).makeTuple (read n) $ cs makeTuple n =…

n-Queen(2)

permutationsを使わずに、昨日書いたn-Queenを書き直してみた。 全列挙ではないので、少しだけ速度が改善された。 しかし、まだまだ改善の余地あり。 import Data.List type Pos = Int main = getLine >>= print.nQueen.read nQueen :: Int -> [Pos] nQueen …

codeforces

久しぶりにcodeforces. この問題 を解いてみた。 import Data.List main = do cs <- getContents case answer.map read.take 6.words $ cs of [a,b,c,d] -> putStrLn (show a ++ " " ++ show b) >> putStrLn (show c ++ " " ++ show d) [] -> putStrLn "-1" …

n-Queen

バックトラックアルゴリズムを書いたことないなあ、と思い、 n-Queen問題に、C言語で挑戦してみた。 方針はわかるのだけれど、 変数の変更の様子を追うのがしんどくてしんどくて..... 挫折した。 こんなことではダメなので、もっとちゃんと考えてから再挑戦…

Prolog練習

2月に入るまでブログが滞ると思われるので、 時間のあるときに少しずつ。 今日は、少し趣旨を変えて、久しぶりにPrologに触ってみることに。 fizzbuzz問題を書いていく! ではやっていきましょうある数を受け取り、それについてのfizzbuzz1を求めるような 基…

入力取り出し

wxHaskellで、エディットコントロールに入力した文字列を取り出すにはどうしたら良いのか調べていました。 Hoogleでは情報がヒットしないので調べ辛い.... 色々調べた結果、 textDialogが使えそう。 textDialog :: Window a -> String -> String -> String -…

Haskell書初

今年一番最初に使った言語はJavaでした。 副作用にまみれそうです笑 でも、Eclipseを使っていて思うのは、補完機能がすごい。 というか、javaで開発する人は、Eclipseなしでは一気に生産性が落ちたりしないのでしょうか? そう思うくらい便利。あと、昨年末…