wvogel日記

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

Haskell

SDL2で簡単作曲ツールを作る

Haskell Advent Calendar 2020,13日目の記事です. はじめに 夏から楽器の練習を始めましたが,如何せん音痴なので,楽譜を読んでも正しい音程やリズムがわかりません.これでは学習が進みませんね. そんな障害をツールで解決するのがエンジニアです. 皆…

HaskellでHTTPリクエストを作る

先日,ATCoderの問題を解けずにAC (Accepted)が獲れなかったら,代わりにGVS法で頭部にAC電流を流すことで, 確実にACが獲できるシステム"GVSCoder"を開発し,動画にして公開しました. GVSCoderの中身はHaskellで書かれており,その時にはまったhttpリクエ…

HaskellチャットサーバでCSSやJSリクエストを返す

Haskellでチャットサーバを立てる記事( Haskellでチャットサーバーを建ててみた - Qiita )を読んで,私も試してみたくなりましたこの記事のプログラムは昔MakerFaireに出した時にも参考にしていて,一度websocketを使った通信は書いたことがあるのですが,…

Haskellで書く3D結晶単位胞ビューア

暑すぎて熱中症になりそうです. 私は自宅ですが,三密が満たされている場所ではもっと暑そうです. 密といえば,立方最密構造ですよね!! 三密が禁忌とされる今,Haskellの3DCGライブラリnot-glossを使って,金属単結晶とイオン結晶体のビューアを作成しま…

楕円曲線暗号(EC Elgamal)を実装する

少し前の記事でIUT理論に関する書籍を読んでいましたが,その中で楕円曲線の対称性を利用したという記述がありました.また,楕円曲線の持つ特殊性から暗号分野にも応用されていると. 恥ずかしながら私はRSA暗号・AES暗号あたりしか触ったことがなく,楕円…

Haskellでシリアル通信

友人と製作中の,電気刺激を使った展示品. 電気刺激装置自体は内部にPICを搭載していて, オリジナル開発者の趣向から, これまではPCからC++で書かれたソフトウェアを介して刺激を生成していた.ただし,今回は電気刺激の部分以外のアルゴリズム開発を担当…

Yesodで作る,業務外社内ツール

この記事はHaskell(その3) Advent Calendar 2017の22日目の記事になります.「ああ,Haskellで仕事できたらどれだけ幸せか!」おそらくHaskell好きな方にはこういった方が多いと思います. ですが,実情としてC++やC#, Pythonといった主力勢力の多い企業や団…

FreeGameでゲームを作る

wxHaskell, OpenGL, Glossなどなど, HaskellでGUIアプリケーションを作るための環境が色々出る中、 fumievalさんが作ったFreeGameモジュールが非常に使いやすそう. なんか作りたいなあと思いつつも, いい題材がみつからず放置していた. そんな中, 先日四条畷…

書初め

ブログ放置しすぎてた。 夏ごろの完成を目処に製作中のものがあるので、 ひとまずはその公開を目標に今年も書いていきたいと思います。 2014年が始まり、今年の書初めもHaskell.以前、Parsecで割と(?)多機能というか、普通の電卓は作ったので、 今日はサクッ…

FFI 2

職場にHaskellを導入する言いながら、 なかなかさせてもらえません。そろそろこちらからアピールしておかなければ。今アンとして出ているのは、 パーサーをHaskellで書いてC#などから利用することとか。 C#にもF#にも、ParseqとかFParsecとかあるので そこま…

イラストロジック

もう気がついたら4月です。 そして気がついたらもう3ヶ月以上も何も記事書いていなかったことに気づいて驚愕してる... 遅ればせながら、今年もよろしくお願いします。さて。 Haskell-IDEやFreeGameでゲーム作成など、色々やりたいことはあるんですが、Fedora…

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…

wxHaskellテキスト処理

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

Glossに触ってみた

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

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

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

画像描画 高速化

というわけで。 高速化を試してみました。 まず、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点に関して再帰的…

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 …