空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

7行プログラミング

勉強がてらRuby7行プログラミングに挑戦してみた。AceCADから出ているDigiMemoという手書きノート電子化デバイスの出力ファイル形式(.DHW)から座標データを抽出するコンバータ。7行どころか5行で終わってしまった。これを利用すれば,Windowsでしか使えないDigiMemoのファイルを直接MacOSXでも読める形式(例えばEPSとか)に変換することが出来るようになります。

#!/usr/bin/ruby
aa=Array.new;File.open(ARGV.shift,"rb")do|f|;begin;b=f.getc;end until b==129;a=?
Array.new;until f.eof?;b=f.getc;case b;when 136,144;f.read(1);aa.push(a);a=?
Array.new;when 128;f.read(4);when 129;else;a.push(f.getc*128+b);end;end;end;aa.?
each do|a|;print"-?n";1.step(a.size,2)do|n|;print"#{a[n-1]},#{a[n]}?n";end;end

バイナリファイルの解析に半日くらい使ったのだが,わずか5行に収まってしまった。バックスラッシュが全部「?」になっているのはご愛嬌ということで。