久しぶりに D
ほんと久しぶりに D 言語とか触ったよ。というか D でプログラムしたよ。
まあ内容はとあるテキストデータのコンバータなわけなんですけど、前は C で組んでて、ちょっと修正するたびにあーひーほーへーだったので、D で書き換えたんですが、行数数分の1で30分くらいでできちゃってあーもーうーわー(<擬音多いな)って感じで軽く凹んだ。
というわけで、C の融通の利かなさも嫌いじゃないけど、D の便利さもやっぱり良いなあ、と。そうやっていずれ LL とかにはまっていくのよねえ...。
↓ちなみにこんなの。
private import std.c.windows.windows; private import std.stdio; private import std.string; private import std.file; private char[] score; private char[][] score_cnv; int main(char[][] argv) { if(argv.length != 2){ writefln("???? score converter"); writefln("usage : ????_cnv score-file"); return -1; } score = cast(char[])std.file.read(argv[1]); score = replace(score, "1\t", "1,"); score = replace(score, "\t", "0,"); score = replace(score, " 0,", "f, 0.0f,"); int len = 0; foreach(char[] s; splitlines(score)){ len++; score_cnv.length = len; score_cnv[len-1] = "{ " ~ s ~ "0 },"; } score_cnv[len-1] = replace(score_cnv[len-1], "0.0f,0,", "0.0f,-1,"); foreach(char[]s; score_cnv){ s = replace(s, "10 },", "1 },"); writefln(s); } return 0; }
これ C だと数倍に膨れ上がるのよねえ...。適当なライブラリがあれば良いんだけど。
WindowsAPI とかだったらいろいろあるのかしら?もうここ10年近く触って無いのでわからぬが。