haskell

3種類の設計に挑戦

プログラムはその設計思想によりいろいろなタイプがある。今回その代表的な3つのタイプでプログラムを組んでみた。ひとつが手続き型、もう一つがオブジェクト指向、そしてもう一つが関数型である。他にもいろいろな言語があるが私が扱えそうなのはこれだけ…

HaskellからC++への移植

相変わらず仰々しいタイトルだが例の如く内容はしょぼいのでその辺は気にしないように。 そもそも私がHaskellを勉強し始めたのはC++のTemplateをより有効に使えるようにする為だったりする。まあ現在のところまだまだ勉強不足なのであまり有効に出来てないが…

数値積分

ずいぶん空いてしまいました。でも頑張るぞ。 積分というものは殆どの場合、解析的には不可能なので実際には数値的に行うことが多いです。今回はそんな数値積分の代表的(ていうか簡単な)方法として2種類、台形近似とシンプソン近似です。考え方は両方とも同…

ソート!ソート!ソート!

今回のお題はソートです。今までは移植を順番にしてきましたがなんとなくイレギュラーにやります。ていうか、確かに移植対象もソートだったんですが各ソートごとにサンプルがあったので1回にまとめました。 ソートなんてだいたいどの言語でも標準ライブラリ…

8回目のHaskell

だんだんペースが落ちてきましたがまだ何とかなっている・・・はずです。まあ止まらなければよいよ(適当今日のお題は"nextperm.c"順列を求めます。C++のSTLにもありますね。初期の配列を渡して、そこから随時次の順列に書き換えて、全ての順列が終了したらf…

7回目のHaskell

だんだん惰性になってきたけど続けるよ!続けることに意味がある!(マテ 今日のお題は"meansd3"平均と標準偏差を求めます。平均は合計を個数で割った値。標準偏差は分散の平方根で、分散は平均からの距離の2乗の平均。これを展開すると、分散は2乗の平均か…

6回目のHaskell

今日のお題は"rand.c"擬似乱数の生成です。アルゴリズムは最も単純な線形合同法。適当に決めた定数をかけて足して下位ビットと取ってくるだけです。乱数の制度としてはあまり使い物にならないですが殆どのC++コンパイラのrand()の実装は線形合同法らしいです…

5回目のHaskell

今日のお題は"fractoriz.c"素因数分解です。アルゴリズムは至って簡単で2から初めて割りまくってだんだん大きい値で割っていき、最終的に√nまで割る数が着たら終了という。まあ言葉で説明するの大変だから適当に検索かけてください(ぉ 割る数は理想的には…

4回目のHaskell

ちょっとずつ慣れてきたがしかしまだ4回しか書いていないのでまだまだ初心者の領域。まああせらずに一歩ずつ進んでいきます。 今日のお題は"pi2.c"円周率の計算ですね。元のアルゴリズムを調べてみたところ、どうやらAGMというアルゴリズムみたいですね。 h…

3回目のHaskell

奇跡の3回目!!いやよく挫折せずに続いているなとちょっと感心しています。難易度に押しつぶされるかと思ったけどそうでもないな。むしろ面白くなってきたところ。この調子でチャレンジし続けたいです。 今日のお題は"area.c"です。多角形の面積を求めるプ…

2回目のHaskell

奇跡的に2回目突入(ぇ まあもちろん書けそうなサンプルを選んできてはいるんですけどね(^^; まあとにかく書きまくって経験を積むのが目的なのでサンプルを選り好みするのも挫折することに比べたらはるかにマシ!!と開き直ってます。さて、今日のネタ…

初めてのHaskell

早速開始。早速挫折orz 持っている本は表示が文字列だけだった。数値計算結果の表示ってどうやるの?てなわけでHaskellでの定番の挫折、IOで転びました。まあ調べまくったらprintでよいということがわかりましたが。 とりあえずひたすら転びながら何とかでき…