2017-02-16 2 views
0

Я занимаюсь использованием массивов и итераций в Ruby. Я смог понять контекст кода, но у меня проблема с отображением вывода определенным образом.Имея проблему с итерированием вывода определенным образом

Мой ожидаемый результат:

0 0 0 0 
0 1 0 0 
0 0 0 1 
0 0 0 0 

Текущий результат:

0 
0 
0 
0 
0 
1 
0 
0 
0 
0 
0 
1 
0 
0 
0 
0 

Мой код:

class Image 
    def initialize(image) 
    @image = image 
    end 

    def output_image 
    @image.each_index do |array| 
     subarray = @image[array] 
     subarray.each do |cell| 
     if array[0] 
      print "#{cell} \n" 
     elsif array[1] 
      print "#{cell} \n" 
     elsif array[2] 
      print "#{cell} \n" 
     elsif array[3] 
      print "#{cell} \n" 
     end 
     end 
    end 
    end 
end 

image = Image.new([ 
    [0, 0, 0, 0], 
    [0, 1, 0, 0], 
    [0, 0, 0, 1], 
    [0, 0, 0, 0] 
]) 

image.output_image 
+0

Не нужно просить нас о помощи. Это цель сайта. Это использование проблемы с печатью ... \ n "". '\ n' заставляет ваш вывод запускать новую строку после каждой печати. –

+0

Я понимаю вашу точку зрения, но я пришел за помощью после борьбы в течение 10 часов. Я использую этот сайт в качестве последней линии обороны –

+0

Возможно. Помните, что Stack Overflow не является дискуссионным списком, это больше похоже на онлайн-справочник. В вашем вопросе появилась новая статья, которая поможет будущим пользователям, и, как результат, формулировка должна быть детализирована и доведена до конца. Это может быть несколько неформальным, и, хотя ответы на этот вопрос помогут вам, SO не является личным справочным сайтом, поэтому просьбы о помощи не подходят. Цель состоит в том, чтобы помочь другим в первую очередь. –

ответ

1

Вы делаете это слишком сложным для вас, я думаю, , Вы можете просто перебирать вспомогательные массивы и присоединять их к пробелу.

def output_image 
    @image.each do |image| 
    puts image.join(' ') 
    end 
end 
+3

Значительно чище! Я думаю, что это должно быть «puts», так что каждый подмассива печатается в отдельной строке. –

+0

@ JustinHellreich Да, обновлено, чтобы использовать 'puts' вместо этого, хорошая точка. – Iceman

+1

Ах! Спасибо. Я не думал о методе соединения. Я снова перейду к массиву. –

1

Array#join приходит на помощь. Присоединяйте строки с пробелом, присоедините результат с возвратом каретки, прибылью.

puts @image.map { |inner| inner.join ' ' }.join $/ 
#⇒ 0 0 0 0 
# 0 1 0 0 
# 0 0 0 1 
# 0 0 0 0 
+0

Благодарим вас за ввод. Я снова рассмотрю массив doc. Метод Join был одним из немногих методов, которые я пропустил –

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