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

四則演算しかできないeval

30分プログラム、その669。四則演算しかできないevalを作ってみました。 今日、輪講資料を作るためにSICPを読んでました。かの有名な"超言語抽象"の章です。で、そこを読んでたら、evalを書きたくなったので書いてみました。 ちゃんとLispを実行できるevalは…

自分で遅延リストを作って、素数計算

30分プログラム、その668。自分で遅延リストを作って、素数計算をしてみました。 明日、研究室で発表をしなければいけないことを考えてると憂鬱になるので、素数を数えるコードを書いてみました。こういう無心で書けるコードは心が落ちつくので、わりとあり…

各要素に平等なconcat

30分プログラム、その667。各要素に平等なconcatを作ってみる。 リストの結合は(append xs ys zs)でできますけど、xsが全部登場したあとにysが始めて登場するので、ysやzsにはちょっと不公平です。具体的には、 ;; urlからファイルをダウンロードする関数 (d…

与えられた文字列を、#で囲むプログラム

30分プログラム、その666。与えられた文字列を、#で囲むプログラムを書いてみた。以下のような動作をするプログラムを書いてみた。 $ python border.py 1st "HELO WORLD" ############## # # # HELO WORLD # # # ##############特に目的は考えてないんですけ…

log(自然対数)の計算

30分プログラム、その665。log(自然対数)の計算をしてみる。 logの近似式について -log(常用対数)の近似式を教えて戴きたいです。- 数学 | 教えて!gooというページを見付けました。ようするに、『ボクの環境だとlogがないんだけど、なんかいい近似式しらな…

今日の証明: reverse (reverse xs) = xs

最近Coqが流行してるので、ボクも流れに乗ってみました。今回、ボクが証明したかったのは、2回reverseすると元に戻るという性質です。 Theorem RevReflect : forall {A : Type} {xs : list A}, reverse (reverse xs) = xs. そののために、appendを定義したり…

ErlangでファイルのMD5計算

30分プログラム、その664。ErlangでファイルのMD5計算をやってみました。 本当は、md5ベースで重複ファイルの削除をするぜ、みたいなことをやりたかったんです。でも、特定ファイルのmd5を計算するだけで時間が立ってしまいました。特にio_lib:formatに渡す…

Readerモナドを試してみる

30分プログラム、その663。Readerモナドを試してみました。 The Reader monadを読んでたら、環境がどうのこうの書いてあったので、簡単なプログラミング言語を作ってみました。環境が使いたかっただけなので、変数束縛と変数参照のほかには、整数リテラルと…

サイコロコマンド - コマンドライン引数からランダムに1つ返すコマンド

30分プログラム、その662。コマンドライン引数からランダムに1つ返すコマンドを作ってみた。イメージとしては、各面の文字を自由に決めれるサイコロ。そういえば最近、Scalaを触ってないことに気がついたので、リハビリがてら簡単なコマンドを作ってみた。 …

srfi-9のレコード型を試してみた

30分プログラム、その661。Gauche Users’ Reference: Topを試してみた。 今まで、Schemeで構造化されたデータが欲しいときはリストで表現してました。 (define (make-account name balance) (cons name balance)) (define account-name car) (define account…

Twitterで「〜なう」とかつぶやくボタンを作るWebサービス「ついったボタン」をリリースしました

http://tw-button.appspot.com/というWebサービスを作ってみました。みんな、試してみてください。 何コレ? クリックすると、Twitterに特定を発言が投稿されるボタンを作ります。 「自宅なう」のような定型文を投稿するボタンを作っておいて、iPhoneからクリ…

2人の相性度は? (EPOCH@まつやま - 本選3)

30分プログラム、その660。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_219より。 SMLはまだまだ不慣れなので、これくらいがちょうどいいです。 使い方 - friend "Alice" "Bob"; val it = 5 : int ソースコード fun toNum c = Char.ord (Char.t…

ファイルの先頭のコメントを除去するスクリプト

30分プログラム、その659。ファイルの先頭にテキストを追加するスクリプト - みずぴー日記の逆で、ファイルの先頭のコメントを除去するスクリプトを書いてみました。 前回までのあらすじ 昔々、とあるソフトウェアをリリースするにあたり、そのソースコード…

行数に応じてlessとcatを切替えてくれるスクリプト

30分プログラム、その658。行数に応じてlessとcatを切替えてくれるスクリプトを書いてみました。 ボクは、ファイルの中身を見るとき、画面に収まるならcat、収まらないならlessを使う派です。lessを使うとqを押さないといけないのが面倒なのです。 で、そう…

pa_field: {foo}を{foo=foo}にするCamlp4拡張

将来のOCamlで{foo = foo}のかわりに{foo}と書けるようになるかも、というウワサがあるらしいです。 ステキな機能ですね。ここ最近、 let f {foo=foo;bar=bar;baz=baz} = ... みたいなコードをずっと書いてて嫌になってきたので、Camlp4で実現してみました。…

ドント方式投票の計算

30分プログラム、その657。ドント方式投票の計算をやってみました。新聞を読んでいたら「ドント式投票は、より民意が反映される」という趣旨のことが書いてありました。"民意が反映される"の意味はよく分からないですが、とりあえずコードを書いてみましょう…

4uの画像を延々と表示するMUGEN 4uを作ってみた

id:zyxwvが、STRAIGHTLINE™の画像を溜め込んで、それを延々と表示するJavascriptを書いてました。変態ですね。それを内輪だけで使っているのはもったいないので、外部に公開可能な形に書き換えてみました。 http://howdyworld.org/4u/ SafariかChromeなどのW…

ln2を計算しよう

30分プログラム、その656。ln2を計算してみよう。 SICPによると、らしいです。本来は無限ストリームを使って解く問題ですが、今回は有限の長さのリストを使っています。そのせいで、第何項までで計算するかを指定しなければいけません。 無限ストリームを使…

オイラー定数を計算してみた

30分プログラム、その655。オイラー定数を計算してみました。 京都に旅行に行ってきました! 旅行中に、ふらふらっとジュンク堂に入ったらオイラー定数1000000桁表が置いてあったので、つい買ってしまいました。 で、せっかく買ったので、オイラー定数を計算…

月齢を計算してみる

30分プログラム、その654。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_214をマネしました。 単純にマネするだけではおもしろくないので、月名を出すようにしてみました。でも、まあ、今日の月齢を出すだけなので、空を見上げたほうが早いと思…

サイコロを100回振って、各目の出る割り合いを求める

30分プログラム、その653。サイコロを100回振って、各目の出る割り合いを求めてみる。ソーシャル・ネットワーキング サービス [mixi(ミクシィ)]にインスパイアされました。 問題2.1〜6の目が出るサイコロを100回振って、1〜6の目が出る割合を求めるプログラ…

平方根の計算、再び

30分プログラム、その652。平方根の求め方の方法で、平方根の計算方法を試してみました。 「なんで奇数を引くんだよ。わけ解んねーよ」と騒いでたら、id:Roccoさん、別名@hi_saitoさんに、平方根の求め方というサイトを紹介してもらいました。というわけで、…

itertoolsで素数計算

30分プログラム、その651。itertoolsで素数計算をしてみた。今日、ちょっと動揺することがあったので、心を落ち着けるために素数を数えるコードを書いてみました。ネタのつもりだったんですけど、わりと落ち着きました。よかったです。で、その辺のことはお…