tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 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}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue