Skip to content

Instantly share code, notes, and snippets.

@anderseriksson
Created April 4, 2012 05:14
Show Gist options
  • Save anderseriksson/2297914 to your computer and use it in GitHub Desktop.
Save anderseriksson/2297914 to your computer and use it in GitHub Desktop.
Beräkna kontrollsiffran i ett personnummer med Scala (Luhn-algoritmen)
/**
*
* @param args personnumemr in the format yymmdd-nnnn
*/
def main(args: Array[String]) {
if (args.length > 0) {
val sum = args(0).toList.filter(_ != '-').map(_ - '0').take(9).foldLeft(0,2)((r,c) => {
(r._1 + (c * r._2) / 10 + (c *r._2) % 10 , if (r._2 ==2) 1 else 2)
})._1 % 10
val checkSum = if (sum == 0) 0 else 10 - sum
println(checkSum)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment