How to resolve the algorithm Damm algorithm step by step in the AutoHotkey programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Damm algorithm step by step in the AutoHotkey programming language

Table of Contents

Problem Statement

The Damm algorithm is a checksum algorithm which detects all single digit errors and adjacent transposition errors.

The algorithm is named after H. Michael Damm.

Verify the checksum, stored as last digit of an input.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Damm algorithm step by step in the AutoHotkey programming language

Source code in the autohotkey programming language

Damm(num){
	row := 1, Damm := [[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]]
	for i, v in StrSplit(SubStr(num, 1, -1)){
		++row := Damm[row, v+1]
	}
	return (SubStr(num, 0)=row-1 && !Damm[row, row])
}


result := ""
for i, num in [5724, 5727, 112946, 112949]
	result .= num "`tis " (Damm(num) ? "valid" : "not valid") "`n"
MsgBox % result


  

You may also check:How to resolve the algorithm Hofstadter-Conway $10,000 sequence step by step in the Raku programming language
You may also check:How to resolve the algorithm Find limit of recursion step by step in the Vala programming language
You may also check:How to resolve the algorithm Keyboard input/Flush the keyboard buffer step by step in the Wren programming language
You may also check:How to resolve the algorithm Largest number divisible by its digits step by step in the RPL programming language
You may also check:How to resolve the algorithm Leap year step by step in the Neko programming language