首页 > 解决方案 > 将字符串转换为数组并进行操作

问题描述

我有一个像这样的字符串:"1234567334535674326774324423". 我需要创建一个方法来执行以下操作:

  1. 制作一个由字符串中的数字组成的数组,例如[1, 2, 3, ..., 2, 3]
  2. 对数组的所有奇数位置求和
  3. 对数组的所有偶数位置求和
  4. 将奇数乘以 3
  5. 对第 4 步和第 3 步求和。
  6. 获取与步骤 5 相加的最小数,以得到 5 的倍数的总和。

我不知道如何用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

标签: ruby-on-railsruby

解决方案


I solved it. Here is the code if anyone needs it:

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

推荐阅读