Numbering
Numbering が終了。
JavaScript
murky-satyr 氏復活だ。強い。
32B@JavaScript by murky-satyr
!function f(n,x,i){for(i=n/n;i<4;f(n-1,' '+x+i+++'.'))print(x+i)}(readline(),'')
ロジックは私の解と同じだが、i=n/n が光ってる。n=0 の時、i=NaN になるので、i<4 が false となり、リカーシブコールを止められるというわけか。う〜む。すごいな。
Groovy
こちらも、murky-satyr氏の 70B@Groovy。
(f={n,x=0->n&&3.times{println(++x);f~-n," $x.0"}})System.in.read()%8
まず、closure の引数宣言の =0 は初期化ではなくてデフォルティングだ。そして、リカーシブコールの f の引数に関しての括弧の省略。完敗だな。
ところで、なんで、println の括弧は省略できないんだろう。つまり、
3.times{println++x;...
'++' が println の Post Increment と解釈されるからなんだな。Post ++ は Pre ++ より precedence が高い。なので、
x+++y
は、
(x++)+y
と解釈される。なので、
x+(++y)
と書かないと y の Pre ++ にはならない。println の場合は、関数呼び出しの括弧だが、括弧省略ルールとしては、同じ原則に従っているということだな。
これに限らず、Groovy の関数呼び出し括弧省略ルールは分かりにくい。
追記訂正
operator precedence の問題じゃないな。むしろ、lexical analysis で、はじめの2つの '+' が '++' トークンと扱われるためだと思う。