using System;
using System.Text.RegularExpressions;
using System.Linq;
using System.Collections.Generic;
class MainClass {
static void Main() {
var pnr = "0001010008";
var control = false;
var val = 0;
pnr = Regex.Replace(pnr, "[^0-9]", "");
if(pnr.Length > 10)
{
pnr = pnr.Substring(2);
}
var pnrList = pnr.Select(c => (int)Char.GetNumericValue(c)).ToList();
for(int i = 0; i < 9; i++)
{
var temp = 2 - i % 2;
temp *= pnrList[i];
val += temp % 10; // addera ental
val += temp / 10; // addera tiotal som ental
}
var actual = 10 - val % 10; // invertera tiotal
actual %= 10; // korrigera så 10 blir 0
Console.WriteLine($"val = {val}");
if(pnr.Length == 9)
{
Console.WriteLine($"Personnummer: {pnr}{actual}");
}
else
{
Console.WriteLine($"Personnummer: {pnr}");
control = pnrList[9] == actual;
Console.WriteLine($"Kontrollsiffran stämmer{(control ? "." : " inte!")}");
if(!control) {
Console.WriteLine($"Det riktiga kontrollsiffran är {actual}");
Console.WriteLine($"Korrigerat personnummer: {pnr.Substring(0,9)}{actual}");
}
}
}
}