我不会编写 Ruby 代码,但我发现这个 ruby 代码可以计算 AEMO NMI 的校验和
def checksum
summation = 0
@nmi.reverse.split(//).each_index do |i|
value = nmi[nmi.length - i - 1].ord
value *= 2 if i.even?
value = value.to_s.split(//).map(&:to_i).reduce(:+)
summation += value
end
checksum = (10 - (summation % 10)) % 10
checksum
end
有人可以帮我解释这条线是什么意思吗?
value = value.to_s.split(//).map(&:to_i).reduce(:+)
我尝试将上面的代码转换为 VBA for excel。
对于“4103738516”的输入将为您提供 8 “4102030716” ==> 2 “QFFF0000LV” ==> 7
在本文档的第 40 页中有 JavaScript 代码来计算它,但我无法理解代码。
https://www.aemo.com.au/-/media/Files/PDF/0610-0008-pdf.pdf
谢谢