NSUInteger local fn Damm( string as CFStringRef ) mda(0,0) = {{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}} NSUInteger i, colI, oldRowI = 0, newRowI for i = 0 to len(string) - 1 colI = intval(string[i]) newRowI = mda(oldRowI,colI) oldRowI = newRowI next end fn = newRowI void local fn DoIt CFArrayRef dta = @[@"5724",@"5727",@"112946",@"112949"] for CFStringRef string in dta print string; if ( fn Damm( string ) == 0 ) print @" is valid" else print @" is invalid" end if next end fn fn DoIt HandleEvents