groovyの勉強を始めてみた

本日の題材はACM-ICPCの問題。2010年国内予選の問題A。一番簡単な奴。
http://icpc2010.honiden.nii.ac.jp/domestic-contest/problems#section_A

eclipse開発だから、ファイルへの入出力へと変更した。
あとは、愚直に書いてみた。

package acm.jp2011p

def xs = []
def ys = []
def out = new PrintWriter(new File(args[1]))
new File(args[0]).splitEachLine("\\s+"){ List<String> items ->
    items = items.collect { it.toInteger() }
    if( items.size() == 1 ){
        if( xs.size() > 0 && ys.size() > 0 ) out.println ((xs.max()-xs.min()+1) + " " + (ys.max()-ys.min()+1))
        xs = [0]; ys = [0]
    } else {
        switch( items[1] ){
        case 0: xs.add(xs[items[0]]-1); ys.add(ys[items[0]]);   break
        case 1: xs.add(xs[items[0]]);   ys.add(ys[items[0]]+1); break
        case 2: xs.add(xs[items[0]]+1); ys.add(ys[items[0]]);   break
        case 3: xs.add(xs[items[0]]);   ys.add(ys[items[0]]-1); break
        }
    }
}
out.close()