2015-11-30 3 views
0

Я выполняю упражнение, которое зависит от возможности выполнить эту задачу. Я должен взять целое число с цифрой> = 0, т. Е. 830124, и создать массив отдельных цифр.Практическое руководство: многозначное целое число, извлекает каждое целое число в массив из целых чисел

Мое мышление состоит в том, что я могу преобразовать его в строку, индексировать строку в массиве, а затем преобразовать обратно в ints, но я все еще немного потерял. Какие-либо предложения?

+0

разделите число на 10, используйте коэффициент и сохраните массив. Надеюсь, это сработает. – Grv

ответ

2
n = 830124 

n.to_s.split('').map(&:to_i) 
    #=> [8, 3, 0, 1, 2, 4] 

или без преобразования символов к целым числам:

n.to_s.size.times.with_object([]) { |_,a| n,i = n.divmod(10); a.unshift(i) } 
    #=> [8, 3, 0, 1, 2, 4] 
2

Ваша интуиция верна:

830124.to_s.each_char.map(&:to_i) 
# => [ 8, 3, 0, 1, 2, 4 ] 

Это также очень легко сделать с математикой в ​​одиночку, что, вероятно, немного быстрее:

num = 830124 
arr = [] 

while num > 0 
    num, remainder = num.divmod(10) 
    arr.unshift(remainder) 
end 

p arr 
# => [ 8, 3, 0, 1, 2, 4 ] 
+0

Mindlink на работе над v2. –

+0

Любые планы находиться в Индианаполисе в следующую субботу? –

+0

Нет ..? Там что-то происходит? –

Смежные вопросы