csütörtök, január 21st, 2010 | Author:

Az előző bejegyzésben írt feladat megoldása Scala-ban:

Update: átírtam kicsit a jobb érthetőség kedvéért.

package calc

object Calc {
    def main(args: Array[String]) {
        var str = ""
        var limit = if (args.length > 0) args(0).toInt else 10
        for(i <- 0 to limit) {
            str = calcNext(str)
            println(str)
        }
    }

    def calcNext(in:String):String = {
        in match {
            case "" => "1"
            case _ => {
                    val init = (0, in(0), "")
                    val (_, _, value) = ( init /: (in + " ") ) { calcNextStr }
                    value
                }
        }
    }

    def calcNextStr( t:(Int, Char, String), next:Char ) = {
        val (count, ch, aggr) = t
        if(ch == next) {
            (count+1, next, aggr)
        } else {
            (1, next, aggr + count.toString + ch)
        }
    }
}

Az eredmény pedig 5 elemre:
1
11
21
1211
111221
312211

Tags:
Category: Hobbi
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply » Log in


You must be logged in to post a comment.