ruby-on-rails - 将字符串转换为数组并进行操作
问题描述
我有一个像这样的字符串:"1234567334535674326774324423"
. 我需要创建一个方法来执行以下操作:
- 制作一个由字符串中的数字组成的数组,例如
[1, 2, 3, ..., 2, 3]
- 对数组的所有奇数位置求和
- 对数组的所有偶数位置求和
- 将奇数乘以 3
- 对第 4 步和第 3 步求和。
- 获取与步骤 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
解决方案
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
推荐阅读
- java - 如何在 Springboot 应用程序中与同一应用程序中的 Springboot 服务在同一端口上运行 Angular 5 客户端
- python - Selenium:获取页面源时发出警报
- c# - 将日期时间传递给 sql server 存储过程添加 1 秒
- reactjs - 如何使用 webpack 将拆分的块文件注入 aspx 文件?
- jenkins - 发送在 jenkins ui 生成测试结果的邮件
- sql - 如何使用 4tables 中的 case 语句连接 postgres sql 中的行
- junit - 免费标记模板 - FTL 给出新行的测试错误
- php - 使用 codeigniter 进行表单验证时出错
- azure - 是否需要有 azure 备份计划?
- javascript - 当在字段中按下 Enter 时,以编程方式模拟对元素的单击