Skip to content

Instantly share code, notes, and snippets.

@notyy
Created April 18, 2012 11:46
Show Gist options
  • Save notyy/2413072 to your computer and use it in GitHub Desktop.
Save notyy/2413072 to your computer and use it in GitHub Desktop.
pig2
object Succ {
def main(args: Array[String]) {
assert(succ("") == "")
assert(succ("3") == "4")
assert(succ("R2D3") == "R2D4")
assert(succ("R293") == "R294")
assert(succ("R2D9") == "R2E0")
assert(succ("A99") == "B00")
assert(succ("Z99") == "AA00")
assert(succ("Zz99") == "AAa00")
assert(succ("9Z") == "10A")
println("finished")
}
def succ(expr: List[Char], carry:Char): List[Char] = expr match {
case Nil => List(carry)
case ch :: xs => {
ch match {
case '9' => '0' :: succ(xs, '1')
case 'z' => 'a' :: succ(xs, 'a')
case 'Z' => 'A' :: succ(xs, 'A')
case x => (x+1).toChar :: xs
}
}
}
def succ(s:String): String = if(s.isEmpty) "" else succ(s.toList.reverse, '1').reverse.mkString
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment