Есть ли самый простой способ увеличить значение в строке? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть строка a с большим количеством цифр, например a = '4408 0412 3456 7893'.

Я хочу, чтобы каждое второе значение (начиная с index=0) было умножено на 2. И я написал этот код,но он слишком большой (и неправильный) и сложный:

    a = '4408 0412 3456 7893'
    b = a.delete(' ')
    card = []
    c = b.split(//)

    c.each_with_index do |value, index|
      card << ((value.to_i) *2) if index % 2 == 0
    end

Потому что в конце у меня есть массив, такой как [8, 0, 0, 2, 6, 10, 14, 18], но у меня должна быть другая строка, такая как '8408042264106148183'.

1 Ответ

0 голосов
/ 16 мая 2019

Чтобы превратить вашу строку в массив с целыми числами:

array = '4408 0412 3456 7893'.delete(' ').split('').map(&:to_i)
# result: [4, 4, 0, 8, 0, 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3]

Чтобы изменить массив на массив, в котором каждое второе (?) Значение удваивается:

array.each_with_index {|v,i| i.even? ? array[i] = v*2 : array[i] = v}
# result: [8, 4, 0, 8, 0, 4, 2, 2, 6, 4, 10, 6, 14, 8, 18, 3]

Чтобы сделатьеще раз:

array.join('')
# result: "8408042264106148183"

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...