csütörtök, január 21st, 2010 | Author: Vagabond
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
Category: Hobbi
