comma format

comma format 終了しました。

JS

なんとか、xulapp さんの 47B に追いついた。直前の解は、49B で、以下のよう。

for(;;)print(readline().split(/\B(?=(?:...)+$)/))

'\B' は非ワード境界にマッチし、'(?=X)' は、その '\B' の後ろに 'X' が続いている場合、という条件を付加するもの。つまり、上記は、3 の倍数個の文字を後ろにともなう非ワード境界にマッチする、という意味になる。ちょうどカンマの入る位置だ。ところが、以前、murky-satyr さんの box paint の解で、前に何もともなわない '(?!X)' が使われているのがあったので、'\B' を取り除いてみたら 47B で動いてしまった。'(?=X)' や '(?!X)' が、前に何もともなわない正規表現というのは、どう解釈されるのだろう?

C

inaniwa さんとタイのトップ 69B は、ロケールを en_US.utf8 にして、printf() を用いたもの。前の日記にも書いたが、85B の解の方が面白い。私の 85B 解も not さんの解とほぼ同じだ。この解が面白かったのは、1000 で割っているところだ。つまり、元の数値を 1000 進数に変換して各桁にカンマを挟んだ、と解釈することもできること。ただ、問題の数値の数字に 0 が含まれていなかったからうまくいった、ということもあるけど。。。

GolfScript

GolfScript の解のポイントは、'-3/' の部分だな。これは、'-1%' して、'3/' するのと同等だ。つまり、文字列を反転させて、3文字ずつに区切る、ということができる。GolfScript は技が色々ありすぎて難しい。
最近やった、delete duplicate lines の 6B@GolfScript も配列の中から DUP を取り除く、技、というか、定石なんだろうな。