OGNL で FizzBuzz
今度は Seasar2 の dicon ファイルでも利用されている式言語, OGNL でやってみたよ.
#fizzbuzz = :[ @System@out.println( #this % 15 == 0 ? 'FizzBuzz' : #this % 3 == 0 ? 'Fizz' : #this % 5 == 0 ? 'Buzz' : #this), #this < 100 ? #fizzbuzz(#this + 1) : 0], #fizzbuzz(1)
Pseudo-Lambda Expressions を使ってます.
あるいは,最初に 1〜100 のリストを作って,その要素を置き換えて最後に表示するやり方とか.
#mkList = :[#this.add(#this.size + 1), #this.size < 100 ? #mkList(#this) : #this], #mkList({}). {#this % 15 == 0 ? 'FizzBuzz' : #this % 3 == 0 ? 'Fizz' : #this % 5 == 0 ? 'Buzz' : #this}. {#var = #this, @System@out.println(#var)}
最後のところの #var = #this
がなんか不格好.
でもでも,こうしないと @System@out.println()
の中では #this
は null
になってるんだよね.
@System@
がコンテキストになってる?
でもでも,Pseudo-Lambda Expressions の中ではそんなことにならないんだけど.
OGNL も奥が深いなぁ.
っていうか,まだ FizzBuzz やってても恥ずかしくないよね?
ゴルフじゃなくても恥ずかしくないよね?
P.S.
Whitespace でやってる猛者がいる〜 (笑)
http://d.hatena.ne.jp/etsav/20070518/1179507015
これはすごいなぁ.
P.P.S
recomplile.net の takai さんが J でやってくれることになってるんだけどなぁ.
まだかなまだかなぁ〜
P.P.P.S
お.