38 lines
942 B
Plaintext
38 lines
942 B
Plaintext
class DammAlgorithm {
|
|
@table : static : Int[,];
|
|
|
|
function : Main(args : String[]) ~ Nil {
|
|
@table := [
|
|
[0, 3, 1, 7, 5, 9, 8, 6, 4, 2]
|
|
[7, 0, 9, 2, 1, 5, 4, 8, 6, 3]
|
|
[4, 2, 0, 6, 8, 7, 1, 3, 5, 9]
|
|
[1, 7, 5, 0, 9, 8, 3, 4, 2, 6]
|
|
[6, 1, 2, 3, 0, 4, 5, 9, 7, 8]
|
|
[3, 6, 7, 4, 2, 0, 9, 5, 8, 1]
|
|
[5, 8, 6, 9, 7, 2, 0, 1, 3, 4]
|
|
[8, 9, 4, 5, 3, 6, 2, 0, 1, 7]
|
|
[9, 4, 3, 8, 6, 1, 7, 2, 0, 5]
|
|
[2, 5, 8, 1, 4, 3, 6, 7, 9, 0]];
|
|
|
|
numbers := [ 5724, 5727, 112946, 112949 ];
|
|
each (i : numbers) {
|
|
number := numbers[i];
|
|
isValid := Damm(number->ToString());
|
|
if (isValid) {
|
|
"{$number} is valid"->PrintLine();
|
|
}
|
|
else {
|
|
"{$number} is invalid"->PrintLine();
|
|
};
|
|
};
|
|
}
|
|
|
|
function : Damm(s : String) ~ Bool {
|
|
interim := 0;
|
|
each (i : s) {
|
|
interim := @table[interim, s->Get(i) - '0'];
|
|
};
|
|
return interim = 0;
|
|
}
|
|
}
|