<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Scala' on doukaku.org</title><link>http://ja.doukaku.org/lang/scala/</link><description>Latest comments for language 'Scala' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 20:00:29 -0000</lastBuildDate><item><title>sna's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7982/</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;
  極力シンプルにと言うことでspawn。&lt;br/&gt;yieldが予約語だったことを忘れてて少し悩んだ。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import scala.concurrent.ops._

object TwoThread extends Application {
  spawn { (&amp;#39;a&amp;#39; to &amp;#39;j&amp;#39;).foreach{ x =&amp;gt; print(x + &amp;quot; &amp;quot;); Thread.`yield` } }
  spawn { (  1 to 10 ).foreach{ x =&amp;gt; print(x + &amp;quot; &amp;quot;); Thread.`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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7982/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7982/</guid></item><item><title>sna's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7921/</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;
  1引数関数は()の代わりに{}を使用可、多引数関数はFunction.curriedでカリー化して呼び出せる。ifはパターンマッチ、whileは末尾再起で代替可能。&lt;br/&gt;&lt;br/&gt;引数を持つメソッドが宣言できないためmainメソッドに渡されるargsを取れないので、標準入力から入力します。
&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;object ParenthesesChecker extends Application {
  
  {
    def cons[A] = Function.curried{Stream.cons[A] _}
    
    def lines: Stream[String] = cons[String]{readLine}{lines}
    val src = lines.takeWhile{_ != null}.mkString.elements
    
    var count = 0
    val OPEN_CHAR = 40.toChar
    val CLOSE_CHAR = 41.toChar
    def loop: Unit = src.hasNext match {
      case true =&amp;gt; src.next match {
        case 40               =&amp;gt; count += 1; loop
        case 41 if count == 0 =&amp;gt; println{false}
        case 41               =&amp;gt; count -= 1; loop
        case _ =&amp;gt; loop
      }
      case false =&amp;gt; println{count == 0}
    }
    loop
  }
  
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7921/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7921/</guid></item><item><title>sna's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7858/</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;pre class='compact'&gt;表示用の漢数字は無限リストで。
乗算は数値を使わずリストで表現。&lt;/pre&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;object MultiplicationTable {
  
  def main(args: Array[String]) {
    
    val kns = &amp;quot;〇一二三四五六七八九&amp;quot;.map(_.toString).toList
    lazy val knns: Stream[String] =
      kns.toStream append knns.tail.flatMap{ knn =&amp;gt; kns.map(knn + _) }
    val fknns = knns.map{ knnn =&amp;gt;
      knnn.replaceAll(&amp;quot;^.$&amp;quot;, &amp;quot;　&amp;quot;).replaceAll(&amp;quot;[^　]+&amp;quot;, &amp;quot;&amp;quot;) + knnn }
    
    lazy val ds: Stream[List[Unit]] =
      Stream.cons(List(()), ds.map(() :: _)) take kns.tail.length
    val dds = ds.toList.map{ d =&amp;gt; ds.toList.map(_.flatMap{ v =&amp;gt; d }) }
    
    dds foreach { dd =&amp;gt;
      dd foreach { d =&amp;gt;
        print(&amp;quot; &amp;quot; + fknns(d.length))
      }
      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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7858/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7858/</guid></item><item><title>nido's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7841/</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;div class="section"&gt;
&lt;p&gt;Scalaの勉強始めたので習作です。&lt;/p&gt;
&lt;/div&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;object Kuku {
  def main(args: Array[String]) = {
    val kansuji = &amp;quot;〇一二三四五六七八九&amp;quot;.toCharArray.map{_.toString}
    for (y &amp;lt;- kansuji if (y != kansuji.first)) {
      for (x &amp;lt;- kansuji if (x != kansuji.first)) {
        val mul = kansuji.indexOf(x) * kansuji.indexOf(y)
        if (mul &amp;gt;= kansuji.size) {
          print (kansuji(mul / kansuji.size) + kansuji(mul % kansuji.size) + &amp;quot;\t&amp;quot;)
        } else {
          print (kansuji(mul) + &amp;quot;\t&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7841/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7841/</guid></item><item><title>匿名's comment on ミリ秒まで含んだ時刻文字列
</title><link>http://ja.doukaku.org/comment/7762/</link><description>



&lt;a href="http://ja.doukaku.org/184/"&gt;ミリ秒まで含んだ時刻文字列&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/184/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/184/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;”DD”は”ｄｄ”でないと表示がおかしくなりませんか？&lt;/p&gt;

&lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7762/</guid></item><item><title>takeo's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7743/</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;あまりScalaらしくありませんが...。&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;object Tsv {
  
  def tsv(text:String) : Unit = {
    import scala.io.Source
    val lines = Source.fromString(text).getLines
    print(lines.next)
    val data = lines.map({s:String =&amp;gt; s.split(&amp;quot;\t&amp;quot;)})
    val lst = List.fromIterator(data).sort({(a:Array[String], b:Array[String]) =&amp;gt; Integer.parseInt(a(0)) &amp;lt; Integer.parseInt(b(0))})
    for (line &amp;lt;- lst) {print(line(0) + &amp;quot;\t&amp;quot; + line(1) + &amp;quot;\t&amp;quot; + line(2) + &amp;quot;\t&amp;quot; + line(3))}
  }
  
  def main(args : Array[String]) : Unit = {
    val testData = &amp;quot;ID\tSurname\tForename\tAge\n1\tSato\tHanako\t17\n0\tSuzuki\tTaro\t18\n&amp;quot;
    tsv(testData)
  }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7743/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7743/</guid></item><item><title>lunlumo's comment on 変数の初期値
</title><link>http://ja.doukaku.org/comment/7697/</link><description>



&lt;a href="http://ja.doukaku.org/167/"&gt;変数の初期値&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/167/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/167/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　scalaの場合変数宣言時に値を設定する必要があるので，未初期化時に値を設定するやり方は用意されていません。Option型は用意されているので，Noneが設定されている場合に限り値を設定する処理を参考までに挙げておきます。&lt;/p&gt;
&lt;/div&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;class DefinedOr[T] {
    var    _v:Option[T] = None
    def this(n:T) = { this(); this.v = n }
    def v:Option[T] = _v
    def v_=(v:T) = { _v = Some(v) }
    def ||=(n:T) = { v = v match { case None =&amp;gt; n; case Some(x) =&amp;gt; x } }
}
object Main {
    def main(args:Array[String]) = {
        var    d:DefinedOr[Int] = new DefinedOr
        println(d.v)
        d ||= 0
        println(d.v)
        d ||= 1
        println(d.v)
        d = new DefinedOr(2)
        println(d.v)
        d ||= 0
        println(d.v)
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7697/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7697/</guid></item><item><title>lunlumo's comment on 2^i * 3^j * 5^k なる整数
</title><link>http://ja.doukaku.org/comment/7696/</link><description>



&lt;a href="http://ja.doukaku.org/206/"&gt;2^i * 3^j * 5^k なる整数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/206/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/206/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;　#7638と#7671のやり方で。&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
34
35
36
37
38&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import    scala.collection.immutable.SortedSet
import    scala.collection.immutable.TreeSet
abstract class CHammingNumbers {
    def take(n:Int):List[Int]
}
class CHammingNumbersG extends CHammingNumbers {
    def next(s:List[Int],h:List[Int]):Tuple2[List[Int],List[Int]] = {
        val    m:List[Int] = s.zip(List(2,3,5)).map { v =&amp;gt; h.apply(v._1)*v._2 }
        val    n:Int = m.sort { (a,b) =&amp;gt; a &amp;lt; b }.head
        (s.zip(m).map { v =&amp;gt; (v._2 == n) match { case true =&amp;gt; v._1 + 1; case _ =&amp;gt; v._1 } },h+n)
    }
    def take(n:Int,s:List[Int],h:List[Int]):Tuple2[List[Int],List[Int]] = n match {
            case 0 =&amp;gt; (s,h)
            case _ =&amp;gt; next(s,h) match { case v =&amp;gt; take(n-1,v._1,v._2) }
        }
    def take(n:Int):List[Int] = take(n-1,List(0,0,0),List(1))._2
}
class CHammingNumbersS extends CHammingNumbers {
    def next(c:SortedSet[Int]):Tuple2[Int,SortedSet[Int]] = (c.firstKey,(TreeSet(c.firstKey*2,c.firstKey*3,c.firstKey*5)++(c-c.firstKey)))
    def take(n:Int,c:SortedSet[Int]):List[Int] = n match {
            case 0 =&amp;gt; List()
            case _ =&amp;gt; next(c) match { case v =&amp;gt; v._1::take(n-1,v._2) }
        }
    def take(n:Int):List[Int] = take(n,TreeSet(1))
}
object HammingNumbers {
    def main(args:Array[String]):Unit = {
        try {
            val    n:Int = args.length match {
                case 1 =&amp;gt; args(0).toInt
                case _ =&amp;gt; 100
            }
            List(new CHammingNumbersG,new CHammingNumbersS).foreach { h =&amp;gt; println(h.take(n).mkString(&amp;quot;\n&amp;quot;)) }
        } catch {
            case e =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7696/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7696/</guid></item><item><title>lunlumo's comment on 2^i * 3^j * 5^k なる整数
</title><link>http://ja.doukaku.org/comment/7695/</link><description>



&lt;a href="http://ja.doukaku.org/206/"&gt;2^i * 3^j * 5^k なる整数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/206/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/206/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;　Streamを使って書いてみました。&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;object HammingNumbers {
    def from(n:Int):Stream[Int] = Stream.cons(n,from(n+1))
    def hammings(s:Stream[Int]):Stream[Int] = {
        def divide(n:Int,b:Int):Int = (n % b == 0) match {
                case false =&amp;gt; n
                case _ =&amp;gt; divide(n/b,b)
            }
        Stream.cons(s.head,hammings(s.tail.filter { n =&amp;gt; List(2,3,5).foldLeft(n) { (v,b) =&amp;gt; divide(v,b) } == 1 }))
    }
    def hammings():Stream[Int] = hammings(from(1))
    def main(args:Array[String]):Unit = {
        try {
            val    n:Int = args.length match {
                case 1 =&amp;gt; args(0).toInt
                case _ =&amp;gt; 100
            }
            println(hammings().take(n).mkString(&amp;quot;\n&amp;quot;))
        } catch {
            case e =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7695/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7695/</guid></item><item><title>lunlumo's comment on 2^i * 3^j * 5^k なる整数
</title><link>http://ja.doukaku.org/comment/7658/</link><description>



&lt;a href="http://ja.doukaku.org/206/"&gt;2^i * 3^j * 5^k なる整数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/206/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/206/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　[1..100]&amp;gt;&amp;gt;=penさんの投稿を参考に書いてみました。&lt;/p&gt;
&lt;/div&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;class CHummingNumbers {
    def next(c:Int):Int = (BigInt(30).pow(c) % c).intValue match {
            case 0 =&amp;gt; c
            case _ =&amp;gt; next(c+1)
        }
    def take(n:Int,c:Int):List[Int] = n match {
            case 0 =&amp;gt; List()
            case _ =&amp;gt; next(c) match { case v =&amp;gt; v::take(n-1,v+1) }
        }
    def take(n:Int):List[Int] = take(n,1)
}
object HummingNumbers {
    def main(args:Array[String]):Unit = {
        try {
            val    n:Int = args.length match {
                case 1 =&amp;gt; args(0).toInt
                case _ =&amp;gt; 100
            }
            println((new CHummingNumbers).take(n).mkString(&amp;quot;\n&amp;quot;))
        } catch {
            case e =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7658/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7658/</guid></item><item><title>lunlumo's comment on LL Golf Hole 9 - トラックバックを打つ
</title><link>http://ja.doukaku.org/comment/7593/</link><description>



&lt;a href="http://ja.doukaku.org/207/"&gt;LL Golf Hole 9 - トラックバックを打つ&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/207/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/207/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　scalaで。&lt;/p&gt;
&lt;/div&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;import    java.io._
import    java.net._
val    c = (new URL(&amp;quot;http://ll.jus.or.jp/2008/blog/archives/38/trackback&amp;quot;)).openConnection.asInstanceOf[HttpURLConnection]
c.setRequestMethod(&amp;quot;POST&amp;quot;)
c.setDoOutput(true)
val    o = new OutputStreamWriter(c.getOutputStream)
o.write(&amp;quot;title=LL+Golf+Hole+9&amp;amp;excerpt=trackback+from+LL+Golf+Hole+9.&amp;amp;url=http://ja.doukaku.org/207/&amp;amp;blog_name=LL+Golf+Hole+9&amp;quot;)
o.flush
o.close
val    i = new BufferedReader(new InputStreamReader(c.getInputStream))
while (i.ready) {
    println(i.readLine)
}
c.disconnect
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7593/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7593/</guid></item><item><title>lunlumo's comment on 与えられた並べ替えを実現するあみだくじの生成
</title><link>http://ja.doukaku.org/comment/7560/</link><description>



&lt;a href="http://ja.doukaku.org/109/"&gt;与えられた並べ替えを実現するあみだくじの生成&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/109/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/109/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　ソートを掛ける方法で。&lt;/p&gt;
&lt;/div&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
34
35
36
37
38
39
40
41
42
43
44&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;class CGhostLeg(g:List[Int]) {
    val    s:List[Int] = g.sort { (a,b) =&amp;gt; a &amp;lt; b }
    var    p:List[List[Boolean]] = List()
    def create:CGhostLeg = {
        def _calc(c:List[Int],r:Tuple2[List[Int],List[Boolean]]):Tuple2[List[Int],List[Boolean]] = c match {
                case List() =&amp;gt; r
                case h::List() =&amp;gt; (r._1+h,r._2)
                case h::t =&amp;gt; h.compare(t.head) match {
                        case p if p &amp;gt; 0 =&amp;gt; _calc(c.slice(2).asInstanceOf[List[Int]],(r._1+c.apply(1)+h,r._2+true++(t match { case h::List() =&amp;gt; List(); case _ =&amp;gt; List(false) })))
                        case _ =&amp;gt; _calc(t,(r._1+h,r._2+false))
                    }
                case _ =&amp;gt; r
            }
        def _step(c:List[Int]):Unit = {
            val    n = _calc(c,(List(),List()))
            p = n._2::p
            if (!n._1.zip(s).filter { d =&amp;gt; d._1 != d._2 }.isEmpty) _step(n._1)
        }
        _step(g)
        this
    }
    def print:Unit = {
        def _join(d:String,l:List[String]):String = l.head + l.tail.foldLeft(&amp;quot;&amp;quot;) { (s,e) =&amp;gt; s + d + e }
        println(_join(&amp;quot; &amp;quot;,s.map { e =&amp;gt; e.toString }))
        p.foreach { l =&amp;gt;
            println(_join(&amp;quot;|&amp;quot;,&amp;quot;&amp;quot;::(l.map { e =&amp;gt; e match { case true =&amp;gt; &amp;quot;-&amp;quot;; case _ =&amp;gt; &amp;quot; &amp;quot; } })+&amp;quot;&amp;quot;))
        }
        println(_join(&amp;quot; &amp;quot;,g.map { e =&amp;gt; e.toString }))
    }
}

object GhostLeg {
    def main(args:Array[String]):Unit = {
        try {
            var    g:List[Int] = args.length match {
                case 0 =&amp;gt; List(3,5,2,4,0,1)
                case _ =&amp;gt; args.toList.map { s =&amp;gt; s.toInt }
            }
            (new CGhostLeg(g)).create.print
        } catch {
            case e =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7560/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7560/</guid></item><item><title>lunlumo's comment on 魔方分割数
</title><link>http://ja.doukaku.org/comment/7555/</link><description>



&lt;a href="http://ja.doukaku.org/108/"&gt;魔方分割数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/108/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/108/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　Pentium1.6GHzの端末で17分少し掛かりました。&lt;/p&gt;
&lt;/div&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
34
35
36
37&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import    java.text.SimpleDateFormat
import    java.util.Calendar

class CMagicNumber(n:Int) {
    val    m:Int = n * n
    val    a:Int = n * (n * n + 1) / 2
    def calc:Int = {
        def _calc(p:Int,c:Int,s:Int,r:List[Int],g:Int):Int = r match {
                case List() =&amp;gt; g + 1
                case _ =&amp;gt; c match {
                        case 0 =&amp;gt; _calc(r.head,1,r.head,r.tail, g)
                        case _ =&amp;gt; r.filter { d =&amp;gt; d &amp;gt; p }.foldLeft(g) { (g,d) =&amp;gt;
                                ((c == n - 1) &amp;amp;&amp;amp; (s + d == a)) match {
                                    case true =&amp;gt; _calc(0,0,0,r.filter { e =&amp;gt; e != d },g)
                                    case _ =&amp;gt; (d + s &amp;gt;= a) match {
                                            case true =&amp;gt; g
                                            case _ =&amp;gt; _calc(d,c + 1,s + d,r.filter { e =&amp;gt; e != d },g)
                                        }
                                }
                            }
                    }
            }
        _calc(0,0,0,(1 to m).toList,0)
    }
}
object MagicNumber {
    def printTime:Unit = println((new SimpleDateFormat(&amp;quot;yyyy/MM/dd HH:mm:ss&amp;quot;)).format(Calendar.getInstance.getTime))
    def main(args:Array[String]):Unit = {
        try {
            printTime
            printf(&amp;quot;result:%d\n&amp;quot;,(new CMagicNumber(args.length match { case 1 =&amp;gt; args(0).toInt; case _ =&amp;gt; 5 })).calc)
            printTime
        } catch {
            case e =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7555/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7555/</guid></item><item><title>lunlumo's comment on 文字列型日時ののN秒後時間取得
</title><link>http://ja.doukaku.org/comment/7539/</link><description>



&lt;a href="http://ja.doukaku.org/204/"&gt;文字列型日時ののN秒後時間取得&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/204/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/204/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　Javaと余り変わりませんがscala版を。&lt;/p&gt;
&lt;/div&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&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import    java.text.DateFormat
import    java.text.ParseException
import    java.text.SimpleDateFormat
import    java.util.Calendar

object DateEx {
    val    formatter:DateFormat = new SimpleDateFormat(&amp;quot;yyyyMMddHHmmss&amp;quot;)
    def DateEx(date:String,diff:Int):String = {
        val    calendar:Calendar = Calendar.getInstance
        calendar.setTime(formatter.parse(date))
        DateEx(calendar,diff)
    }
    def DateEx(diff:Int):String = DateEx(Calendar.getInstance,diff)
    def DateEx(calendar:Calendar,diff:Int):String = {
        calendar.add(Calendar.SECOND,diff)
        formatter.format(calendar.getTime)
    }
    def main(args:Array[String]):Unit = {
        try {
            args.length match {
                case 2 =&amp;gt; println(DateEx(args(0),args(1).toInt))
                case 1 =&amp;gt; println(DateEx(args(0).toInt))
                case _ =&amp;gt; println(DateEx(&amp;quot;20080827235925&amp;quot;,40))
            }
        } catch {
            case ex:ParseException =&amp;gt; println(&amp;quot;invalid date format.&amp;quot;)
            case ex =&amp;gt; ex.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7539/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7539/</guid></item><item><title>lunlumo's comment on tailの実装
</title><link>http://ja.doukaku.org/comment/7505/</link><description>



&lt;a href="http://ja.doukaku.org/195/"&gt;tailの実装&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/195/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/195/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;　オプションの処理にかなり場所をとられてしまっていますが...。&lt;/p&gt;
&lt;/div&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
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import    java.io.FileNotFoundException
import    java.io.File
import    java.io.FileInputStream
import    scala.collection.mutable.HashMap

class InvalidArgumentException extends Exception {}

class GetOpt(f:String) {
    var    _params:List[Tuple2[String,Boolean]] = null
    var    _opt:HashMap[Any,Any] = null
    var    _rest:Array[String] = null
    
    _params = f.toList.foldLeft(List[Tuple2[String,Boolean]]()) { (l,c) =&amp;gt;
        c match {
            case &amp;#39;:&amp;#39; =&amp;gt; l match {
                case List() =&amp;gt; throw new InvalidArgumentException
                case h::r =&amp;gt; (h._1,true)::r
            }
            case k =&amp;gt; (k.toString,false)::l
        }
    }.reverse
    
    def parse(a:Array[String]):GetOpt = {
        def _parse(o:HashMap[Any,Any],l:List[String]):Tuple2[HashMap[Any,Any],List[String]] = l match {
            case List() =&amp;gt; (o,List())
            case h::r =&amp;gt; h.toList match {
                case &amp;#39;-&amp;#39;::k =&amp;gt; {
                    _params.find { e =&amp;gt; e._1 == new String(k.toArray) } match {
                        case Some(Tuple2(_,true)) =&amp;gt; {
                            if (r.size == 0) throw new InvalidArgumentException
                            o.update(new String(k.toArray),r.head)
                            _parse(o,r.tail)
                        }
                        case Some(Tuple2(_,false)) =&amp;gt; {
                            o.update(new String(k.toArray),true)
                            _parse(o,r)
                        }
                        case _ =&amp;gt; throw new InvalidArgumentException
                    }
                }
                case _ =&amp;gt; (o,l)
            }
        }
        _parse(new HashMap[Any,Any],a.toList) match {
            case Tuple2(o,r) =&amp;gt; { _opt = o; _rest = r.toArray }
        }
        this
    }
    
    def getopt(k:String):Any = _opt.isDefinedAt(k) match {
        case true =&amp;gt; _opt.apply(k)
        case _ =&amp;gt; false
    }
    
    def rest:Array[String] = _rest
}

class CTail(n:Int,f:Boolean,i:File) {
    
    val    s:FileInputStream = new FileInputStream(i)
    
    def this(o:GetOpt) =this(o.getopt(&amp;quot;n&amp;quot;) match { case Some(false) =&amp;gt; 10; case n =&amp;gt; n.asInstanceOf[String].toInt },o.getopt(&amp;quot;f&amp;quot;).asInstanceOf[Boolean],new File(o.rest.apply(0)))
    
    def tailn:Unit = {
        
        val    BUF_SIZE:Int = 4096
        val    e:Long = i.length
        
        def _tailn(p:Long,n:Int,b:Array[Byte]):Array[Byte] = {
            var    t:Array[Byte] = null
            var    l:Int = n
            (p &amp;gt; BUF_SIZE) match {
                case true =&amp;gt; {
                    t = new Array[Byte](BUF_SIZE)
                    s.getChannel.position(p - BUF_SIZE)
                    s.read(t,0,BUF_SIZE)
                }
                case _ =&amp;gt; {
                    t = new Array[Byte](p.toInt)
                    s.read(t,0,p.toInt)
                }
            }
            t = t.reverse.takeWhile { c =&amp;gt; if (c == &amp;#39;\n&amp;#39;) l = l - 1; (l &amp;gt; 0) }.reverse
            ((p &amp;lt;= BUF_SIZE) || (l == 0)) match {
                case true =&amp;gt; t ++ b
                case _ =&amp;gt; _tailn(p - BUF_SIZE, l, t ++ b)
            }
        }
        
        print(new String(_tailn(e, n, new Array[Byte](0))))
        s.getChannel.position(e)
    }
    
    def tailf:Unit = {
        def _tailf(b:List[Byte]):List[Byte] = {
            val    c:Int = s.read
            (c &amp;gt;= 0) match {
                case true =&amp;gt; _tailf(b + c.toByte)
                case _ =&amp;gt; b
            }
        }
        print(new String(_tailf(List[Byte]()).toArray))
        Thread.sleep(100)
        tailf
    }
    
    def tail:CTail = {
        tailn
        if (f) tailf
        this
    }
    
    def close:Unit = s.close
}

object Tail {
    def main(args:Array[String]):Unit = {
        try {
            val    o:GetOpt = new GetOpt(&amp;quot;n:f&amp;quot;).parse(args)
            (new CTail(o)).tail.close
        } catch {
            case e:InvalidArgumentException =&amp;gt; println(&amp;quot;usage: scala Tail [-n &amp;lt;number of lines&amp;gt;] [-f] file&amp;quot;)
            case e:FileNotFoundException =&amp;gt; print(&amp;quot;file not found.&amp;quot;)
            case e:Exception =&amp;gt; e.printStackTrace
        }
    }
}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7505/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7505/</guid></item><item><title>lunlumo's comment on LL Golf Hole 7 - バイト数を読みやすくする
</title><link>http://ja.doukaku.org/comment/7492/</link><description>



&lt;a href="http://ja.doukaku.org/202/"&gt;LL Golf Hole 7 - バイト数を読みやすくする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/202/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/202/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;div class="section"&gt;
&lt;p&gt;scalaで書く甲斐の無い感じのソースですが...。&lt;/p&gt;
&lt;/div&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;val v=args(0);val w=(v.size-1)/3;printf(&amp;quot;%.1f%c&amp;quot;,v.toDouble/Math.pow(1000,w),&amp;quot; kMGTPEZY&amp;quot;(w))
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7492/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7492/</guid></item><item><title>lunlumo's comment on LL Golf Hole 8 - 横向きのピラミッドを作る
</title><link>http://ja.doukaku.org/comment/7491/</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;div class="section"&gt;
&lt;p&gt;インタプリタ起動もできるのですねぇ...。知りませんでした。&lt;/p&gt;
&lt;/div&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;val n=readInt;for(i&amp;lt;-(-n+1 to n-1))println(&amp;quot;*&amp;quot;*(n-i.abs))
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7491/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7491/</guid></item><item><title>keisuken's comment on LL Golf Hole 6 - 10進数を2進数に基数変換する
</title><link>http://ja.doukaku.org/comment/7470/</link><description>



&lt;a href="http://ja.doukaku.org/201/"&gt;LL Golf Hole 6 - 10進数を2進数に基数変換する&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/201/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/201/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  効率無視、副作用なし、ユーティリティメソッドを使わないを目標に作っています。&lt;br/&gt;scala&amp;nbsp;h6.scala&amp;nbsp;1234&amp;nbsp;などで動作させます。
&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 b(i:Int,s:String):String=if(i&amp;gt;0) b(i/2,&amp;quot;&amp;quot;+(i%2)+s) else s
println(b(args(0).toInt,&amp;quot;&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7470/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7470/</guid></item><item><title>keisuken's comment on LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する
</title><link>http://ja.doukaku.org/comment/7460/</link><description>



&lt;a href="http://ja.doukaku.org/192/"&gt;LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/192/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/192/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  かなり無駄なバージョン。&lt;br/&gt;GETですけどAPIを使わずにTinyURLを取得して、Regexで抜き出してます。&lt;br/&gt;scala&amp;nbsp;h13.scala&amp;nbsp;で動かします。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;import io._
val url=&amp;quot;http://ll.jus.or.jp/2008/info/xgihyo&amp;quot;
val t=new StringBuilder;for(c&amp;lt;-Source.fromURL(&amp;quot;http://tinyurl.com/create.php?url=&amp;quot;+url))t.append(c);
val r=&amp;quot;&amp;quot;&amp;quot;(?is).*characters:\s+&amp;lt;blockquote&amp;gt;&amp;lt;b&amp;gt;([^\s]*)&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;.*&amp;lt;/blockquote&amp;gt;.*&amp;quot;&amp;quot;&amp;quot;.r
t.toString match{case r(tu)=&amp;gt;println(tu) case _ =&amp;gt;}
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7460/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7460/</guid></item><item><title>keisuken's comment on LL Golf Hole 7 - バイト数を読みやすくする
</title><link>http://ja.doukaku.org/comment/7464/</link><description>



&lt;a href="http://ja.doukaku.org/202/"&gt;LL Golf Hole 7 - バイト数を読みやすくする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/202/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/202/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  サンプルと同じく1000で単位を揃えています。&lt;br/&gt;いつものごとくひねりはありません。再帰呼出でループを表現しています。&lt;br/&gt;あまり大きな数になると表示がおかしくなります:-)。&lt;br/&gt;scala&amp;nbsp;h7.scala&amp;nbsp;1234.5&amp;nbsp;で動作させます。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;val b=args(0).toDouble
val u=&amp;quot; kMGTPEZY&amp;quot;
def p(d:Double,c:Int){if(d&amp;lt;1000D||c==(u.length-1))printf(&amp;quot;%.1f%c&amp;quot;,d,u(c))else p(d/1000D,c+1)}
p(b,0)
&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/scala/"&gt;
      Scala
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7464/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

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