2010-01-01から1ヶ月間の記事一覧

整数分割

30分プログラム、その728。wikipedia:整数分割をやってみた。"並び順を変えても同じ整数分割とみなす"という条件がわりときつくて、それを満たす引数を一個増やしています。 使い方 scala> partition(5) res9: Seq[List[Int]] = RangeG(List(1, 1, 1, 1, 1),…

中置記法からS式への変換

30分プログラム、その727。中置記法からS式への変換。きっと中置記法から逆ポーランド記法への変換のノリでスタックをいい感じに使ってやればできる気がします。ただ、そのやり方を思い付けなかったので、再帰降下構文解析でパースしてます。 再帰降下型パー…

一白水成の純米吟醸 袋吊り生酒を飲んだよ

新入荷しました、と買いてあったのでつい...。相変らず限定品という言葉に弱いです。ちなみに、一升瓶で2,940円でした。驚くほど飲みやすいお酒です。 しかしながら、こんな高い液体をガブガブ飲めるほどブルジョアではないので、意識して味わってみたところ…

C++でバブルソート

30分プログラム、その726。C++でバブルソートを書いてみました。C++を使うのは久しぶりです。 久しぶりすぎてほとんど書けませんでした。ホントは、マージソートを書きたかったんですが、結局バブルソートになりました。あと、最初はイテレータを使って書い…

マクローリン展開でsin関数

30分プログラム、その725。マクローリン展開でsin関数を作ってみました。 簡単だと思いきや結構大変でした。そもそもラジアンなる単位を半分ぐらい忘れてました。コードは、itertoolsを使ってやるために、ちょっと工夫をしてます。n番目の項を直接計算するの…

平均値順にソート

30分プログラム、その724。またもmixiの課題コミュニティからです。 複数の整数を平均値に近い順にソートするプログラムを作成せよ。平均値は切り捨てして整数値で、平均値との距離が等しい場合は値の小さな方を優先するものとする。 らしいです。うっかりし…

画像のグレイスケール化

30分プログラム、その723。Bitmapを書き出してみよう - みずぴー日記で作ったビットマップ読み書きモジュールを使って、画像のグレイスケール化をやってみた。 左のカラフルなハワイの画像をグレースケール化すると、右のようなグレイスケール画像になる。 …

既約分数クイズ

30分プログラム、その722。既約分数クイズにチャレンジしました。 今回は力技で解きましたが、クイズと言うからにはきっとクールな解法があるんでしょう。 使い方 *Main> irreducibleFracs 4 [(0,1),(1,1),(1,2),(1,3),(2,3),(1,4),(3,4)] ソースコード type…

10000以下の完全数を求める

30分プログラム、その721。10000までの完全数をもとめる(Haskell)にインスパイアされました。 元々は、mixiにあった問題らしいです。 使い方 - perfects 10000; val it = [0,6,28,496,8128] : int list ソースコード fun id x = x; fun range n = List.tabul…

ファレイ数列

30分プログラム、その720。mixiの課題コミュニティからのインスパイアです。 趣旨としては、wikipedia:ファレイ数列を生成せよ、という問題です。Wikipediaのページの中盤に書いてある中間数を利用します。 使い方 gosh> (map frac->string (farey 1)) ("0/1…

Coqのモジュール間の依存関係を可視化するスクリプトを書いたよ

Coq

こんな感じの画像を生成してくれます。リファクタリングのお供にどうぞ。 何をやるの? coqdepの出力をdotファイルに変換する dotファイルをGraphvizで画像に変換する 使い方 $ coqdep -I . *.v | ruby depends.rb > depend.dot $ dot -Tpng -o depend.png de…

モンテカルロ法で円周率計算

30分プログラム、その719。モンテカルロ法で円周率計算をやってみました。モンテカルロ法はhttp://www.geocities.jp/turtle_wide/softcomp/al/p03.htmを参考にしました。π = (半径1の扇形の中に入った点の数) / (打った点の数の総数) * 4で出しています。と…

型でOCamlの関数を検索できるサービス、OCaml API Searchをリリースしました

http://search.ocaml.jp/はてなブックマーク- http://search.ocaml.jp/HaskellにはHoogleという型で関数を検索できるグレイトな検索エンジンがあります。関数型言語では、欲しい関数の型がなんとなく分かることが多いので、こいつがものすごく便利です。でも…

数え年の計算

30分プログラム、その718。数え年の計算。 今まで満年齢+1が数え年だと思っていたんですが、どうやらそこまで単純なルールではないらしいです。数え年 - Wikipediaによると、 生れたときは1才 年をまたぐと年齢がインクリメントされる というルールだそうで…

普通のキュー

30分プログラム、その717。最近、functionalなキューばかり作っていたので、普通のキューも作ってみました。 ま、Perlだから配列にpushしてshiftするとキューになるんですけどね! せっかくなので、オブジェクトっぽくしておきました。 使い方 my $q = Queue-…

Coqで健全性と完全性の証明をしたよ

Coq

Coqでラムダ計算を証明してみた - みずぴー日記の続けて、単純型付きラムダ計算の型推論(Type reconstruction)に関する定理の証明をしてました。そして、とうとう健全性と完全性の証明ができました! やったね! GitHub - mzp/lambda at c0123fd0ca42d545f9e45…

陸奥八仙の新春祝酒を飲んだよ

限定って書いてあったのでつい・・。限定品に弱いんです。 どこにも書いてなかったけど、微発泡してた気がする。 フルーティーで、実にうまい。がんがん飲めちゃう気がする。

SHA1の解析(逆計算)

30分プログラム、その716。とある事情でSHA1の解析(逆計算)をしなければならなくなりました。就活をしてるわけではないんですけど、まあ流れというやつです。 で、全組合せに対してSHA1を計算して、それが目的のものと一致するかどうかを調べるというブルー…

Insersion Sort

30分プログラム、その715。2009-11-30 - Haskellで遊ぶよ - haskellにインスパイアされました。 書いてから上記のページを見てみたんけど、http://haskell.org/ghc/docs/latest/html/libraries/base-4.2.0.0/Data-List.htmlのinsertやinsertByがあったのか。…

ならしコストによるキュー

30分プログラム、その715。ならしコストによるキューを作ってみる。 基本的にならしコストによるQueueを実装した - みずぴー日記の焼直しです。むしろ、いくつかの関数の実装をさぼってます。あと、いまさらながらhttp://www.mpi-sws.org/~rossberg/sml-vs-o…

あけましておめでとうございます。

あけましておめでとうございます。 2009年は、OCaml Meetingに参加したり、ついでにLLTVに参加したり、Coqを覚え始めたりと充実した年でした。そういえばiPhoneも買った気がします。2010年は、修論を書き終えて、社会人になるというビッグイベントが待ってい…