Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Run-length-encoding/Scala/run-length-encoding-1.scala
Normal file
13
Task/Run-length-encoding/Scala/run-length-encoding-1.scala
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
def encode(s: String) = (1 until s.size).foldLeft((1, s(0), new StringBuilder)) {
|
||||
case ((len, c, sb), index) if c != s(index) => sb.append(len); sb.append(c); (1, s(index), sb)
|
||||
case ((len, c, sb), _) => (len + 1, c, sb)
|
||||
} match {
|
||||
case (len, c, sb) => sb.append(len); sb.append(c); sb.toString
|
||||
}
|
||||
|
||||
def decode(s: String) = {
|
||||
val sb = new StringBuilder
|
||||
val Code = """(\d+)([A-Z])""".r
|
||||
for (Code(len, c) <- Code findAllIn s) sb.append(c * len.toInt)
|
||||
sb.toString
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
def encode(s:String) = {
|
||||
s.foldLeft((0,s(0),""))( (t,c) => t match {case (i,p,s) => if (p==c) (i+1,p,s) else (1,c,s+i+p)})
|
||||
match {case (i,p,s) => s+i+p}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
def decode(s: String, Code: scala.util.matching.Regex = """(\d+)?([a-zA-Z])""".r) =
|
||||
Code.findAllIn(s).foldLeft("") { case (acc, Code(len, c)) =>
|
||||
acc + c * Option(len).map(_.toInt).getOrElse(1)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue