ブログ放置しすぎてた。 夏ごろの完成を目処に製作中のものがあるので、 ひとまずはその公開を目標に今年も書いていきたいと思います。 2014年が始まり、今年の書初めもHaskell.以前、Parsecで割と(?)多機能というか、普通の電卓は作ったので、 今日はサクッ…
職場にHaskellを導入する言いながら、 なかなかさせてもらえません。そろそろこちらからアピールしておかなければ。今アンとして出ているのは、 パーサーをHaskellで書いてC#などから利用することとか。 C#にもF#にも、ParseqとかFParsecとかあるので そこま…
論文読むの疲れて息抜きに書いた。Card.hs module Card where data Card = Emperor | Citizen | Slave deriving (Eq,Show) data Winner = First | Second | Draw deriving (Eq,Show) cards1 = [Citizen,Citizen,Citizen,Citizen,Emperor] cards2 = [Citizen,…
Haskellのパーサーライブラリといえば、 Peggyなどもありますが、やはりParsecというイメージが強い。で、これまで書いたprojectなんかも殆どParsecを使って書いてきました。そしたらつい先日、TrifectaとかいうEkmettさんのライブラリが存在することを知り…
もう気がついたら4月です。 そして気がついたらもう3ヶ月以上も何も記事書いていなかったことに気づいて驚愕してる... 遅ればせながら、今年もよろしくお願いします。さて。 Haskell-IDEやFreeGameでゲーム作成など、色々やりたいことはあるんですが、Fedora…
最近javascriptとかC#ばかり書いていたので、久々にHaskellで遺伝的プログラミングをしてみた。遺伝的アルゴリズム こちらのサイトを参考にして、 関数の最大値を見つけてくるようなものを作成しました。ココにソース置いてます。何度か実行してみた結果、淘…
衝動的に、画像を生成したくなったので。 PGMファイルを使って、図形を描画してみました。画像の大きさは100*100として、次のように値を設定しました。 poses = [(x,y) | x <-[1..width] , y <- [1..height]] width,height :: Float width = 100 height = 10…
友人曰く、functional lensなるものがあるらしい、調べよ! との事で、調べてみた。Lenses←ここの記事が参考になりました。 読んだところ、C#でいうところの、get,setと同様の機能をより関数型に実装したものがLensのようです。例えば、あるデータを一まとめ…
ここ数日、Why free monads matterの記事を読んでいました。 非常に簡単にモナドを構成できるのはわかったけれど、 これで何が嬉しいのかよくわかりませんでした。 で、記事を読み進めていくうちに、手続き自体の構造を記述するのに非常に便利なのではないか…
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でゲームを作っています。 ノベルゲームの作成で、マウスのクリック位置や画像描画の大体がわかったので、今回は直接描画などを目標として、 簡単なシューティングゲームを作ることにしました。まだ製作中なので完全ではありません…
最近加速アルゴリズムや最大値発見アルゴリズムを勉強しているのですが、ちょっと思い立って、Haskellで焼きなまし法を書いてみた。とはいえ、動作を確認したかっただけなので、 こちらのブログを参考にさせてもらい、そのまま書き下しただけですが。 ソース…
wxHaskellのtutrialに、bouncing ballというのがありますが、 これを見ると、タイマーイベントや入力を通じたイベントで、 Graphicオブジェクトに対して割合簡単に処理を記述出来るよう。また、tutrialで気になったVarて何だろう、思って調べてみたら、IORef…
大学の講義で夏休みの課題がまた出されたのだが、 生憎テスト終了から提出期間までの間は確実に避暑 in hospitalなので、どうも凝ったレポートは作れそうにない (さすがに病室で錫と鉛を溶かすのはよろしくないと思う)そこで、その課題をHaskellかF#で製作す…
最近滞ってしまっていた.... 今、大学の実験課題をHaskellでやっていいよと言われたので、カリカリ作業しているところです。 ネットワークシミュレーション、ダイクストラ、そして現在制作中の統計処理と、3つの課題のうちダイクストラ以外はHaskellでやって…
OpenGLで、昔高校で流行ったチャリ走もどきを作ってみようと思っていたのですが、 今日、Glossなるライブラリがあることを知ったので、 これはOpenGLより使いやすそう! ということで。 さっそく使ってみた。wikiなどを参考に、まずは画面表示。 文字描画、…
Haskellでソケット通信! どのようにやるのか、ネットワークにはてんで疎いので、 yasuabe blog を参考にさせてもらいました。まずは一度丸写しして、どのように動作するのか確認。 2回生の時に講義でやった、javaでの通信ポーカーゲームに似ています、とい…
長らくこのブログも放置してしまっていた... 大会・合宿・旅行と、家にいなかったので。 さて、職場でソースコードの管理にgitを使っているのですが。 「これ使ってねー」 と言われたgitGUIが....使い辛いよ!!FedoraではCUIで操作していることもあって、 …
というわけで。 高速化を試してみました。 まず、read関数はコストが大きいらしいので、これをfromIntegralに置き換え。 また、preservingMatrixを消してやることで1秒近い時間短縮に成功。 そこで、一度、画像ロードにかかる時間、 及び、画像描画にかかる…
入院初日。 試験からも寄席からも開放され、しばしの休息。 というわけで。 久々に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…
蟻本P.35に掲載されていた問題。 要は、二次元配列で渡されたマップ情報を読んで、近傍8座標で繋がっている領域数の数え上げ。ソースコードはこちら(x,y) -> (0,0),(0,1).. のように、順に横方向に探索をかけ、領域が存在したら、 その近傍4点に関して再帰的…
どうしてこうも忙しいのだろう。 まず、試験ラッシュが二月の第Ⅰ、2周にあるのでそれの試験勉強があり、 入院しているのでレポート提出がたまり。 学業の方はそれくらいですが。同じく入院している固めに、落語研究部の仕事が遅々として進まず。落語の練習も…
昔同好会で友人が作ったゲームエンジンのスクリプトパーサーのようなものを書いてみた。 とはいっても、細かいことは覚えてないのだけれど。mes("発話者","発言内容"); img(レイヤー番号,x座標,y座標,"ファイル名"); のような感じだった記憶がある。また、背…
数ヶ月前に遊んで以来全く触っていなかったのですっかり忘れてしまった.... 思い出そうと思って、Peggyチュートリアルにある数式パーサに、べき乗演算を追加したものを書いてみる {-# Language TemplateHaskell,QuasiQuotes, FlexibleContexts #-} import Te…
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 =…
permutationsを使わずに、昨日書いたn-Queenを書き直してみた。 全列挙ではないので、少しだけ速度が改善された。 しかし、まだまだ改善の余地あり。 import Data.List type Pos = Int main = getLine >>= print.nQueen.read nQueen :: Int -> [Pos] nQueen …
久しぶりに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問題に、C言語で挑戦してみた。 方針はわかるのだけれど、 変数の変更の様子を追うのがしんどくてしんどくて..... 挫折した。 こんなことではダメなので、もっとちゃんと考えてから再挑戦…
2月に入るまでブログが滞ると思われるので、 時間のあるときに少しずつ。 今日は、少し趣旨を変えて、久しぶりにPrologに触ってみることに。 fizzbuzz問題を書いていく! ではやっていきましょうある数を受け取り、それについてのfizzbuzz1を求めるような 基…