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

ファイルのマージ(pasteコマンド)

30分プログラム、その120。ファイルをマージするプログラム。昔、書き捨てたプログラムの改造版。書いてから気がついたけど、pasteコマンドそのものだった。 使い方 $ cat 01 000 111 222 333 444 $ cat 02 AAA BBB CCC DDD $ cat 03 aaa bbb ccc ddd $ ruby…

マージソート

30分プログラム、その119。Erlangでマージソート。 使い方 > msort:msort([13,3,2]). [2,3,13] ソースコード シーケンシャルなのでErlangである意味はあまりない気がしてる。 -module(msort). -compile(export_all). merge(A,[]) -> A; merge([],B) -> B; me…

Erlangでいろいろ

30分プログラム、その118。Erlangの勉強を始めたので、車輪の再発明をいくつか。 絶対にlistsモジュールにもうあるんだろうなぁ。 ソースコード -module(newbies). -compile(export_all). last([X])-> X; last([_|T]) -> last(T). foldr(_,Init,[]) -> Init;…

bcコマンドで浮動小数

Mac

bcコマンドで浮動小数演算を行うためには、scale変数に有効桁数を設定する必要がある。 $ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warran…

小町算

30分プログラム、その118。小町算をevalのあるRubyでリベンジ。やっぱりevalがあると楽ですね。 使い方 $ ruby komachi.rb 12.0+34.0+5.0*6.0+7.0+8.0+9.0 1.0+23.0-4.0+56.0+7.0+8.0+9.0 1.0/2.0/3.0*456.0+7.0+8.0+9.0 1.0*2.0+34.0+5.0+6.0*7.0+8.0+9.0 1…

shuffle関数

30分プログラム、その117。配列をシャッフルする関数。 久しぶりにシンプルな課題。こういうのを考えるのは結構好きなのです。 使い方 $ ruby shuffle.rb 1 2 3 4 5 6 7 [4, 1, 3, 5, 7, 2, 6] ソースコード 先頭から順にみていき、それを後続のどれかと入れ…

油売り算(失敗)

30分プログラム、その116。油売り算をやろうとして失敗した。 小町算も失敗しているし、苦手なのかなぁ。そもそもの方法が間違っている気もするけど、一応ソースコードを貼っておく。 そのうち、再チェレンジしよう。

郵便番号の検索

30分プログラム、その115。Pythonで郵便番号の検索。 郵便番号のデータは、郵便番号データダウンロード - 日本郵便でダウンロードできる。久しぶりPythonを使ったら、色々忘れててびっくりした。 使い方 $ sh csv2py.sh 23aichi.csv > ZipData.py $ python z…

Javaアセンブラ

30分プログラム、その114。Jasmin(Javaアセンブラ)でHello,world!!を書く。正直、かなりエラーチェックが緩いので、使いづらい。あと、配布されていたJarだとうまく動かなかったので、ソースからビルドしました。 使い方 $ java -jar jasmin.jar Hello.j $ j…

文字列の距離

30分プログラム、その113。文字列の距離をやってみる。本当はモナドやら動的計画法のイントロの問題らしいんだけど、疲れているのでさわりの部分だけ。 2つの文字列の間の距離を計算するプログラムを書け。文字列間の距離とは、一方の文字列をもう一方の文字…

AquaSKKのキーバインドを変えたい

30分プログラム?、その112。AquaSKKのキーバインドを変えよう。C-jじゃなくてC-oでひらかなモードにしたい。~/Library/AquaSKK/configを次のように書くとできる。再起動か再ログインが必要かな? kakutei-key "\C-o" 補足 実際は、次の順番で読み込まれる。 /…

分散関数呼び出し

30分プログラム、その111。どう書く?org via id:Gemmaさんより。mixiで、次のようなメッセージを受けとったので。 javascriptならproc.toSourceもevalもあるから、本物の分散関数呼び出しができるんじゃない? やらないか? 使い方 こんな感じで使います。ち…

バイナリ解析器ジェネレータ

世界で最も幸せなプログラムは、プログラムを書くプログラムである 30分プログラム、その110。バイナリデータのパーサを自動生成してみる。id:mzp:20070816:classfileがほとんど手書きで書けそうだったので。 使い方 $ cat classfile.h ClassFile{ u4 magic;…

Javaクラスファイル解析(途中まで)

30分プログラム、その109。Javaのクラスファイル解析、もしくはParsecによるバイナリファイルの解析。最近、Java仮想マシン仕様 (The Java series)を読んでいるので、勉強のために。全部はやりきれなかったので、先頭のフィールドのみ。こういうのはC言語の…

ispellラッパ(失敗)

30分プログラム、その108。ispellのラッパを書こうとして失敗した。 やりたかったのは、Emacsのスペルチェッカで"readLine"のような単語をちゃんと認識できるようすること。で、ispellのラッパを書いて、"readLine"->"read Line"のように変換するようにして…

整数の漢数字表記

30分プログラム、その107。整数の漢数字表記。 無性にPythonが使いたくなったので、Pythonで。 使い方 $ jpnum 100 百 $ jpnum 1401 千四百一 ソースコード どことなく、コインの両替と似ている。あれよりも、特殊な条件が多いけれど。あ、両替関数と文字列…

小町算っぽいやつ

30分プログラム、その106。小町算をやろうとして、挫折したやつ。 元ネタはたぶん、LL魂。ダメな理由。 空白に対応していない 括弧を使ってしまっている 使い方 *Main> mapM_ (putStrLn.show) $take 3 ans (1.0+(2.0+(3.0+(4.0+(5.0-(6.0+(7.0-(8.0+(9.0*10.…

転置行列

30分プログラム、その105。Haskellで転置行列。http://www.agusa.i.is.nagoya-u.ac.jp/person/mzp/hiki/?exerciseより。 転置行列なんて使わねーよ、と思って放置していたけど、昨日使ったので。 使い方 *Main> transpose [[1,2,3],[4,5,6],[7,8,9]] [[1,4,7…

ぷりてぃな配列

30分プログラム、その104。綺麗に配列を出力してみる。 sprintfを使えばいいじゃん、という言葉は聞こえないもん。 使い方 t = [] t << ['Alice',20] t << ['Bob',10] t << ['Charry',30] puts t.map{|name,point| ["#{name}: ",'[','='*point,']'] }.to_s …

mixiの1x1のプロフィール画像置き換え

30分プログラム、その103。mixiで1x1のプロフィール画像を置き換えるユーザJavascript。 使い方 「環境設定->詳細設定->コンテンツ->Javascriptオプション->ユーザーJavascriptファイル」で指定したフォルダに置くだけです。 ソースコード new function(){ d…

はてなグループキーワード

明日院試なので、今日の30分プログラムはお休みです。時間はあるけど、心にあまり余裕がないので。そのかわり、前から気になっていたはてなグループを試してみる。はてなダイアリーも設定すればはてなグループのキーワードに自動でリンクを貼れるようにでき…

Pugsのインストールに失敗

30分プログラム?、その102。Pugsをインストールしようとして失敗した。たまにはこういう日もある。どうもghcのバージョンがあわなかった見たいで、liftM_がないぞ、と大量に言われた。 エラーに出会うたびに、import Control.Monadを書きくわえていたけれど…

howm->はてな(その3)

30分プログラム、その101。id:mzp:20070730:howmのバージョンアップ。 追加したのは、 "[p]" or "[password]" or "[private]"があるとアップロードしない howmのディレクトリをコマンドラインで指定できるようになった。 使い方 $ ./howm-hatena ./howm 2007…

Spamブロック付きコメントプラグイン

30分プログラム、その100。Hikiのコメントプラグインspamブロッック付き。100回目なのにしょぼいのは気にしない。標準でついてくるコメントプラグインをハックして、英数字のみから成るコメントをはじくようにした。あと、id:selvaggioに「コメントプラグイ…

そこらへんの大学生の少し上を行くために

夏休みはみんなでGameProgrammingGemsを読もう!とか言っても誰も乗ってきそうにない。とりあえず本がないとなんも始まらんね。そこらへんの研究室から借りてこられないかなー。お手本: id:zyxwv:20070802:1186070439まあ、冗談はさておき、目次を見る限りで…

RhinoでCGI(GET編)

30分プログラム、その99。RhinoでCGIを書いてみる。 CGIライブラリが見つからなかったので、自力でGETパラメータをとってきた。 GETが使えるようになる POSTが使えるようになる DOMが使えるようになる なにかアプリケーションを書く 使い方 http://localhost…

mixi APIを使う

30分プログラム、その98。mixi APIを使ってみよう。mixiツールバーが新着日記を表示していたので、パケットキャプチャをしてみた。そしたら、新着日記をAtomAPIっぽいやつで取得していたので、Rubyで取得できるようにしてみた。 使い方 $ ruby mixi.rb ユー…

Rhinoでprotoype.js

30分プログラム、その97。Rhinoでprototype.jsを使ってみる。prototype.jsは、DOMに依存した関数と、DOMに依存していない関数が混ざって入っています。なので、mapとかが使いたいだけでも、DOM関数を用意する必要があります。John Resig - Bringing the Brow…