今日の雑記

生きることでいっぱいいっぱい

久しぶりに 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年近く触って無いのでわからぬが。