我有一个类似"1234567334535674326774324423"
的字符串。我需要创建一种方法来执行以下操作:
[1, 2, 3, ..., 2, 3]
我不知道如何用Rails解决这个问题。如果有人可以帮助我,我将很高兴。
我有这个:
barcode_array = @invoice.barcode.each_char.map {|c| c.to_i}
impares = [barcode_array[0]] + (1...barcode_array.size).step(2).collect { |i| barcode_array[i] }
pares = (2...barcode_array.size).step(2).collect { |i| barcode_array[i] }
suma_impares = impares.inject(:+)
mult_impares = suma_impares * 3
suma total = mult_impares + pares
答案 0 :(得分:0)
我解决了。如果有人需要,下面是代码:
barcode_array = @invoice.barcode.each_char.map {|c| c.to_i}
impares = [barcode_array[0]] + (1...barcode_array.size).step(2).collect { |i| barcode_array[i] }
pares = (2...barcode_array.size).step(2).collect { |i| barcode_array[i] }
suma_impares = impares.inject(:+).to_i
mult_impares = suma_impares * 3
suma_pares = pares.inject(:+).to_i
suma_total = mult_impares + suma_pares
verificador = 10 - (suma_total - (suma_total / 10).to_i * 10)
@invoice.barcode = @invoice.barcode.to_s + verificador.to_s
答案 1 :(得分:0)
我不确定您在第6步中的意思是什么,但是这就是我要解决1-5的方法:
s = '1234567334535674326774324423'
a = s.chars.map(&:to_i) # convert to an array of integers
odd_sum = 0
even_sum = 0
# sum up odds and evens
a.each_with_index {|n, i| n.even? ? even_sum += n : odd_sum += n}
total = even_sum + odd_sum * 3