; by @Krenium 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] ] damm?: function [z][zero? fold digits to :integer z .seed: 0 [x y]-> table\[x]\[y] ] ; Or, being more explicit: digits2: function [str][ chars: split str result: map chars 'ch -> to :integer ch return result ] damm2?: function [str][ d: digits2 str r: fold d .seed: 0 [x y] -> get get table x y return r = 0 ] test: function [str][ result: switch damm? str -> "valid" -> "invalid" print [str "is" result] ] loop ["5724" "5727" "112946" "112949"] => test