「どう書く?org」(ベータ版)

どう書くorgについてオフィシャルに言及するのは初めてなのですが、アルファ版の時点ではてなブックマークのホットエントリーになったり、 オレンジニュースや やじうまWatchで言及していただいたりしたのですでにご存じの方もいらっしゃるかもしれません。

西尾泰和のブログ @ Cybozu Labs: 「どう書く?org」(ベータ版)を公開しました

LL Spirit での発表はオフィシャルじゃないんですか!? という突っ込みはおいておいて、いくつか微妙な点があるなぁと感じてしまいます。

プログラミング言語間の対訳があれば、殻を破ってマルチリンガルの大空に羽ばたくことができるのに。

西尾泰和のブログ @ Cybozu Labs: 「どう書く?org」(ベータ版)を公開しました

それなら、お題として C か何かで書かれたものを他言語でできるだけ崩すことなく模写せよというもので十分だと思います。つまり、投稿した人で差異が激しいのではないかと思うのです。
あとは解説が欲しいところですね。作られたものがどういうアルゴリズムなんだろう・・・って分かりにくいのは私だけでしょうか。例えば、どう書いても解答ができれば正解なのですが、何となくそれじゃもったいない気がします。http://ja.doukaku.org/73/なんかは (私は解いてないですが) 最大公約数を求めるような方法 (互除法) のようなもので解けるんじゃないのかなと思ったりするのですが、じゃぁ何でそうなるんだろうか? とか、最短を求める探索なら幅優先の探索問題に帰着できるんだろうか? とか色々考えたりするわけですが、それぞれアルゴリズムも異なるので、実際には全く異なるコードになってしまったりして、どれが良いんだっけ? とかと私の場合なってしまうわけです。(苦笑)
ただし、決してダメと言っているわけではなく、粒度が細かな方がよいと言っているわけでもありません。何となく方向性は分かるし、ついていきたいわけですが、皆さんの理解率ってどのくらいなんでしょうか? 私の理解が遅いだけなのでしょうか。
LL Spirit では「キミならどう書く 2.0」を担当させていただいたわけですが、問題の粒度とか、発展性とか、難易度とか、プログラムしなくても描くことができるかとか、当時はそういうことを悩んでいましたので、多分西尾さんも同じことを悩んでいらっしゃるんだろうと勝手に思っています。すでにいくつか参戦させていただいていますが、来年の「キミならどう書く 2.0」の差別化が難しいと今から悩んでいます。(w

awk の OFS は有効です


OFSの指定を無視して入力レコードがそのまま出力されます。

awkコマンドのOFSが無効になるとき - 杉風呂2.0 - A Lifelog -

実際には無視していません。

{print}

は $0 が省略されているだけで、$0 は FS で分割されているわけではなく、この場合には 1 行なので、正しい出力です。

#! /usr/bin/gawk -f
BEGIN {
    FS  = ",";
    OFS = "|";
}
{
    gsub(FS, OFS);
    print;
}

のようにすることで、$1 から $NF までのものを FS から OFS に変換したかのようにして出力しますが、この場合には $0 が gsub() で置換されます。
置換されたくない場合には gawk の gensub() を使うことで回避できます。

gawk 3.1.6 for Windows

きむらさんが gawk 3.1.6 の Windows 版を作成してくれています。

とりあえず実行ファイルまでできたけど、さてどうしましょうかね。

http://www.kt.rim.or.jp/~kbk/zakkicho/07/zakkicho0710c.html#D20071029-1

私はありがたく頂戴しました。

実は手元の Zaurus の rand.awk 問題がまだ解決してなくって、ちと困っています。実行環境を Debian Sarge に chroot してあるのですが、Debian 付属の gawk 3.1.3 は問題なく、自分でビルドした gawk 3.1.6 は問題があるので、ビルドの時の環境依存だと思われるのですが、原因がつかめていません。