<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Groovy' on doukaku.org</title><link>http://ja.doukaku.org/lang/groovy/</link><description>Latest comments for language 'Groovy' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 19:38:15 -0000</lastBuildDate><item><title>genzou's comment on 島の数をカウントする
</title><link>http://ja.doukaku.org/comment/8064/</link><description>



&lt;a href="http://ja.doukaku.org/219/"&gt;島の数をカウントする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/219/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/219/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;しまった・・・誤り発見です。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def text = &amp;quot;&amp;quot;&amp;quot;\
□■■□
■□□□
□□□■
□■■□&amp;quot;&amp;quot;&amp;quot;

def score = [&amp;quot;■&amp;quot;:0, &amp;quot;□&amp;quot;:0]

board = text.readLines().collect{ it.split(&amp;quot;&amp;quot;)[1..-1] }
XMAX = board.size() - 1
YMAX = board[0].size() - 1

def eatAround( mark, x, y ){
    [[&amp;quot;x&amp;quot;:x-1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x+1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y-1], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y+1]].findAll{
        (it.x in 0..XMAX) &amp;amp;&amp;amp; (it.y in 0..YMAX) &amp;amp;&amp;amp; board[it.x][it.y] == mark
    }.each{
        board[it.x][it.y] = &amp;quot;×&amp;quot;
        eatAround( mark, it.x, it.y )
    }
}

(0..XMAX).each{ x -&amp;gt;
    (0..YMAX).each{ y -&amp;gt;
        def mark = board[x][y]
        if( mark != &amp;quot;×&amp;quot; ){
            score[mark]++
            eatAround(mark, x, y)
        }
    }
}

println score
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8064/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8064/</guid></item><item><title>genzou's comment on 島の数をカウントする
</title><link>http://ja.doukaku.org/comment/8065/</link><description>



&lt;a href="http://ja.doukaku.org/219/"&gt;島の数をカウントする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/219/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/219/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;何度もごめんなさい。
ほんのちょっと修正です。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def text = &amp;quot;&amp;quot;&amp;quot;\
□■■□
■□□■
□□■□
□■■□&amp;quot;&amp;quot;&amp;quot;

def score = [&amp;quot;■&amp;quot;:0, &amp;quot;□&amp;quot;:0]

board = text.readLines().collect{ it.split(&amp;quot;&amp;quot;)[1..-1] }
XMAX = board.size() - 1
YMAX = board[0].size() - 1

def eat( mark, x, y ){
    board[x][y] = &amp;quot;×&amp;quot;
    // 周辺もいただきます♪
    [[&amp;quot;x&amp;quot;:x-1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x+1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y-1], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y+1]].findAll{
        (it.x in 0..XMAX) &amp;amp;&amp;amp; (it.y in 0..YMAX) &amp;amp;&amp;amp; board[it.x][it.y] == mark
    }.each{
        eat( mark, it.x, it.y )
    }
}

(0..XMAX).each{ x -&amp;gt;
    (0..YMAX).each{ y -&amp;gt;
        def mark = board[x][y]
        if( mark != &amp;quot;×&amp;quot; ){
            score[mark]++
            eat(mark, x, y)
        }
    }
}

println score
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8065/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8065/</guid></item><item><title>genzou's comment on 島の数をカウントする
</title><link>http://ja.doukaku.org/comment/8063/</link><description>



&lt;a href="http://ja.doukaku.org/219/"&gt;島の数をカウントする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/219/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/219/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;ロジックが汚いですね。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def text = &amp;quot;&amp;quot;&amp;quot;\
□□□□
■□■□
□■□□
□□□□&amp;quot;&amp;quot;&amp;quot;

def score = [&amp;quot;■&amp;quot;:0, &amp;quot;□&amp;quot;:0]

board = text.readLines().collect{ it.split(&amp;quot;&amp;quot;)[1..-1] }
XMAX = board.size() - 1
YMAX = board[0].size() - 1

def eat( mark, x, y ){
    [[&amp;quot;x&amp;quot;:x-1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x+1, &amp;quot;y&amp;quot;:y], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y-1], [&amp;quot;x&amp;quot;:x, &amp;quot;y&amp;quot;:y+1]].findAll{
        (it.x in 0..XMAX) &amp;amp;&amp;amp; (it.y in 0..YMAX) &amp;amp;&amp;amp; board[it.x][it.y] == mark
    }.each{
        board[it.x][it.y] = &amp;quot;×&amp;quot;
        eat( mark, it.x, it.y )
    }
}

XMAX.times{ x -&amp;gt;
    YMAX.times{ y -&amp;gt;
        def mark = board[x][y]
        if( mark != &amp;quot;×&amp;quot; ){
            score[mark]++
            eat(mark, x, y)
        }
    }
}

println score
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8063/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8063/</guid></item><item><title>genzou's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/8016/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;こんな風にcurry化って利用するものなのかな？？&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;run = { list, sleep -&amp;gt; list.each{ println it; Thread.sleep(sleep); } }
Thread.start run.curry(&amp;#39;a&amp;#39;..&amp;#39;z&amp;#39;, 100)
Thread.start run.curry(1..9, 200)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8016/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8016/</guid></item><item><title>matyr's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7984/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;Thread.with{[0..9,&amp;#39;a&amp;#39;..&amp;#39;j&amp;#39;].each{x-&amp;gt;start{x.each{print it;yield()}}}}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7984/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7984/</guid></item><item><title>matyr's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7943/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;正規表現で。Ruby ほど括弧の省略に融通が利かないので苦しい。
&amp;gt; d214.groovy () )() ()() (()()) ())(()
true
false
true
true
false&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;args.each{ { s, r -&amp;gt;
  any s == [s -= r][0] ? { println ![s =~ &amp;#39;[\50\51]&amp;#39;][0] } : { owner.call s, r }
} it, ~&amp;#39;[\50][^\50\51]*[\51]&amp;#39; }
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7943/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7943/</guid></item><item><title>匿名's comment on 世界時計
</title><link>http://ja.doukaku.org/comment/7891/</link><description>



&lt;a href="http://ja.doukaku.org/213/"&gt;世界時計&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/213/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/213/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;horiuchiさんのものをただ置き換えてみました。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import java.text.*
import java.util.*

def outputDate = { date, formatter, timeZoneName, timeZone=null -&amp;gt;
    if(timeZone) formatter.timeZone = TimeZone.getTimeZone(timeZone)
    println &amp;quot;${timeZoneName}は、${formatter.format(date)}です。&amp;quot; 
}

def outputNow = outputDate.curry(new Date(), new SimpleDateFormat(&amp;quot;yyyy年MM月dd日 HH時mm分ss秒&amp;quot;)); 
outputNow(&amp;quot;現在の時刻&amp;quot;)
outputNow(&amp;quot;グリニッジ標準時刻&amp;quot;,&amp;quot;GMT&amp;quot;) 
outputNow(&amp;quot;アメリカ・ロサンゼルスの時刻&amp;quot;,&amp;quot;America/Los_Angeles&amp;quot;)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7891/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7891/</guid></item><item><title>genzou's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7850/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;二番煎じ！！！&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;l = [&amp;quot;〇&amp;quot;, &amp;quot;一&amp;quot;, &amp;quot;二&amp;quot;, &amp;quot;三&amp;quot;, &amp;quot;四&amp;quot;, &amp;quot;五&amp;quot;, &amp;quot;六&amp;quot;, &amp;quot;七&amp;quot;, &amp;quot;八&amp;quot;, &amp;quot;九&amp;quot;]
1.upto(9){ x -&amp;gt;
    1.upto(9){ y -&amp;gt;
        print((x*y).toString().collect{ l[it as int] }.join(&amp;quot;&amp;quot;).padLeft(3, &amp;quot;　&amp;quot;))
    }
    println()
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7850/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7850/</guid></item><item><title>leftovercrack's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7840/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ごめんなさい。。
言語指定わすれたので・・・・。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def 数字 = &amp;quot;〇一二三四五六七八九十&amp;quot;
def 計算数字 = 数字[数字.indexOf(&amp;quot;一&amp;quot;)..数字.indexOf(&amp;quot;九&amp;quot;)] as List
def 範囲 = 計算数字.collect{漢数字-&amp;gt; 数字.indexOf(漢数字) }
println 範囲.collect{段-&amp;gt;
  範囲.collect{掛-&amp;gt;
    new String(段*掛+&amp;quot;&amp;quot;).collect{数-&amp;gt; 数字[(数+&amp;quot;&amp;quot;).toInteger()]}.join().padLeft(数字.indexOf(&amp;quot;二&amp;quot;),&amp;quot;　&amp;quot;)+&amp;quot; &amp;quot;
  }.join(&amp;quot; &amp;quot;)
}.join(&amp;quot;\n&amp;quot;)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7840/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7840/</guid></item><item><title>leftovercrack's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7830/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ざつですが・・。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def kanji = [&amp;quot;〇&amp;quot;, &amp;quot;一&amp;quot;, &amp;quot;二&amp;quot;, &amp;quot;三&amp;quot;, &amp;quot;四&amp;quot;, &amp;quot;五&amp;quot;, &amp;quot;六&amp;quot;, &amp;quot;七&amp;quot;, &amp;quot;八&amp;quot;, &amp;quot;九&amp;quot;];
def nums = (1..9) as List
println nums.collect{i-&amp;gt;
  nums.collect{
    new String(it*i+&amp;quot;&amp;quot;).collect{n-&amp;gt; kanji[(n+&amp;quot;&amp;quot;).toInteger()]}.join().padLeft(2,&amp;quot;　&amp;quot;)+&amp;quot; &amp;quot;
  }.join(&amp;quot; &amp;quot;)
}.join(&amp;quot;\n&amp;quot;)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7830/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7830/</guid></item><item><title>matyr's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7816/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ワンライナ
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;groovy -e &amp;#39;{h,...r-&amp;gt;[h,*r.each{it[0,4]*.toInteger()}.each{++it[3]}.sort{it[0]}]*.join(&amp;quot;\t&amp;quot;).any&amp;quot;&amp;quot;.&amp;amp;println}(*&amp;quot;$System.in&amp;quot;.trim().split(/\n/)*.split(/\t/)*.getAt([0,2,1,3]))&amp;#39;&amp;lt;data.csv
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7816/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7816/</guid></item><item><title>genzou's comment on LL Golf Hole 8 - 横向きのピラミッドを作る
</title><link>http://ja.doukaku.org/comment/7806/</link><description>



&lt;a href="http://ja.doukaku.org/203/"&gt;LL Golf Hole 8 - 横向きのピラミッドを作る&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/203/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/203/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;あっ！！
これいいかも。ある程度わかりいい。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;((1..&amp;lt;n) + (n..1)).each{ println&amp;quot;*&amp;quot;*it }
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7806/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7806/</guid></item><item><title>genzou's comment on LL Golf Hole 8 - 横向きのピラミッドを作る
</title><link>http://ja.doukaku.org/comment/7805/</link><description>



&lt;a href="http://ja.doukaku.org/203/"&gt;LL Golf Hole 8 - 横向きのピラミッドを作る&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/203/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/203/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;あまり頭を使った回答ができない‥・くぅ&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def l = 1..(args[0]-1)
(l + [args[0]] + l.reverse()).each{ println &amp;quot;*&amp;quot;*it }
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7805/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7805/</guid></item><item><title>ksky's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7801/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;私も書いてみました。わかりやすさ重視で書いたつもりです。。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;lines = new File(&amp;#39;test.csv&amp;#39;).readLines()
rows = lines.collect { it.split(&amp;#39;\t&amp;#39;) }
head = rows.remove(0)
rows.each { row -&amp;gt;
  [0, 3].each { row[it] = row[it].toInteger() }
}

rows.sort { it[0] }
[head, *rows].each { tmp = it[1]; it[1] = it[2]; it[2] = tmp }
rows.each { it[3]++ }

[head, *rows].each { println it.join(&amp;#39;\t&amp;#39;) }
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7801/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7801/</guid></item><item><title>匿名's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7799/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;genzouさんに触発されて書いてみました。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;boolean firstLine = true
def lines = []
new File(&amp;quot;test.csv&amp;quot;).eachLine {
    e = it.split(&amp;quot;\t&amp;quot;)
    if (firstLine) {
        println([e[0],e[2],e[1],e[3]].join(&amp;quot;\t&amp;quot;))
        firstLine = false
    }
    else {
        lines.push(e)
    }
}

lines.sort{it[0].toInteger()}.each{
    println([it[0],it[2],it[1],it[3].toInteger() +1].join(&amp;quot;\t&amp;quot;))
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7799/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7799/</guid></item><item><title>genzou's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7796/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def text = new File(&amp;quot;test.csv&amp;quot;).text

def lines = text.split(&amp;quot;\n&amp;quot;)

def titles = lines[0].split(&amp;quot;\t&amp;quot;)
def records = lines[1..-1].collect{
    it.split(&amp;quot;\t&amp;quot;)
}

// 第1カラムの値でデータを昇順にソートする。
records.sort{ it[0] }

// 第2カラムと第3カラムをヘッダを含めて入れ替える。
def change( row ){
    def tmp = row[2]
    row[2] = row[1]
    row[1] = tmp
}
change(titles)
records.each{
    change(it)    
}

// 第4カラムの値にそれぞれ1を加える。
records.each{ r -&amp;gt;
    r[3] = (r[3].toInteger() + 1).toString()
}

([titles] + records).each{
    println it.join(&amp;quot;\t&amp;quot;)
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7796/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7796/</guid></item><item><title>matyr's comment on 数値リストの圧縮
</title><link>http://ja.doukaku.org/comment/7755/</link><description>



&lt;a href="http://ja.doukaku.org/208/"&gt;数値リストの圧縮&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/208/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/208/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;def dkk208(List l){
  l.size &amp;lt; 3 ? l : l[2..-1].inject(l[0, 1]){ r, n -&amp;gt;
    def a = r[-1], b = r[-2]
    if(a instanceof Number &amp;amp;&amp;amp; b instanceof Number &amp;amp;&amp;amp; n == a * 2 - b)
      r[-2..-1] = [[b, n, n - a]]
    else if(a instanceof List &amp;amp;&amp;amp; n == a[1] + a[2])
      a[1] = n
    else
      r &amp;lt;&amp;lt; n
    r
  }.each{ it instanceof List &amp;amp;&amp;amp; it[2] == 1 &amp;amp;&amp;amp; it.pop() }
}
assert dkk208([1, 3, 4, 5, 6, 12, 13, 15, 20, 25, 26, 27]) ==
  [1, [3, 6], 12, 13, [15, 25, 5], 26, 27]
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7755/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7755/</guid></item><item><title>ksky's comment on 起動オプションの解析
</title><link>http://ja.doukaku.org/comment/7720/</link><description>



&lt;a href="http://ja.doukaku.org/205/"&gt;起動オプションの解析&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/205/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/205/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;CliBuilderを使って書いてみました。longOptは期待通りに動きませんが...&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;cli = new CliBuilder(usage:&amp;#39;cmdopt -o [-q] [-d{0|1|2}] 文字列 [文字列 ...]&amp;#39;)
cli.o(longOpt:&amp;#39;output&amp;#39;, required:true, &amp;#39;set output&amp;#39;) 
cli.q(longOpt:&amp;#39;quote&amp;#39;, &amp;#39;set quote&amp;#39;) 
cli.d(longOpt:&amp;#39;debug&amp;#39;, args:1, argName:&amp;#39;level&amp;#39;, &amp;#39;set debug level&amp;#39;) 

opt = cli.parse(args)
if (!opt) System.exit 1
params = opt.arguments()
if (params.size() &amp;lt; 1) die &amp;#39;parameter must be specified&amp;#39;
level = opt.d ? opt.d.toInteger() : 0
if (!(level in 0..2)) die &amp;#39;debug level must be in 0-2&amp;#39;

println &amp;#39;[オプション情報]&amp;#39;
println &amp;quot;o(output): ${opt.o ? &amp;#39;ON&amp;#39; : &amp;#39;OFF&amp;#39;}&amp;quot;
println &amp;quot;q(quote): ${opt.q ? &amp;#39;ON&amp;#39; : &amp;#39;OFF&amp;#39;}&amp;quot;
println &amp;quot;d(debug): $level&amp;quot;
println &amp;#39;\n[パラメータ情報]&amp;#39;
println &amp;quot;指定数: ${params.size()}&amp;quot;
i = 1
params.each { println &amp;quot;${i++}: $it&amp;quot; }

def die(msg) {
  cli.writer.println &amp;quot;error: $msg&amp;quot;
  cli.usage()
  System.exit 1
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7720/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7720/</guid></item><item><title>matyr's comment on LL Golf Hole 3 - 13日の金曜日を数え上げる
</title><link>http://ja.doukaku.org/comment/7633/</link><description>



&lt;a href="http://ja.doukaku.org/197/"&gt;LL Golf Hole 3 - 13日の金曜日を数え上げる&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/197/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/197/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  同じ方針で 67B。使いませんでしたが，"${l.size}" は "$l.size" でOKです。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;a=(new Date()..new Date(114,0,0)).grep{it=~/i\D+13/}
print a+a.size
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7633/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7633/</guid></item><item><title>ksky's comment on echoクライアント
</title><link>http://ja.doukaku.org/comment/7574/</link><description>



&lt;a href="http://ja.doukaku.org/199/"&gt;echoクライアント&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/199/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/199/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;try {
  host = args[0] 
  port = args[1].toInteger()
} catch (e) {
  println &amp;quot;usage: groovy ${this.class.name} host port&amp;quot;
  System.exit 1
}

new Socket(host, port).withStreams { is, os -&amp;gt;
  dis = new DataInputStream(is)
  buf = new byte[1024]
  while ((len = System.in.read(buf)) &amp;gt;= 0) {
    os.write(buf, 0, len)
    dis.readFully(buf, 0, len)
    System.out.write(buf, 0, len)
  }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/groovy/"&gt;
      Groovy
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7574/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7574/</guid></item></channel></rss>