Sha256: cf9f01532b88af3e3b70d85d9dd8d6736151e19f1b1318138c57605b8b27da13
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
module NumberPlate module SG module Checksum CHECK_SUM = { 0 => "A", 1 => "Z", 2 => "Y", 3 => "X", 4 => "U", 5 => "T", 6 => "S", 7 => "R", 8 => "P", 9 => "M", 10 => "L", 11 => "K", 12 => "J", 13 => "H", 14 => "G", 15 => "E", 16 => "D", 17 => "C", 18 => "B" } MULTIPLIER = [9, 4, 5, 4, 3, 2] def checksum get_checksum_from_numbers(numbers) end def numbers numbers = [] @letters.split(//).each do |alphebat| numbers << (alphebat.ord - 64) end if numbers.length == 3 numbers = numbers[1,2] elsif numbers.length == 1 numbers = [1] + numbers end numerals = ("000" + @numerals)[-4,4] numbers + numerals.split(//).map(&:to_i) end def get_checksum_from_numbers(numbers) checksum_array = [] numbers.zip(MULTIPLIER) { |x, y| checksum_array << (x * y) } checksum_key = checksum_array.reduce(:+) % 19 CHECK_SUM[checksum_key] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
number_plate_sg-0.2.0 | lib/number_plate/sg/checksum.rb |
number_plate_sg-0.1.0 | lib/number_plate/sg/checksum.rb |