Praktykułem za pomocą tablic i iteracji w Ruby. Udało mi się zrozumieć kontekst kodu, ale mam problem z wyświetlaniem wyjścia w określony sposób.

Oczekiwany wynik to:

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

Wyjście prądowe to:

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

Mój kod to:

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
David Chu 16 luty 2017, 21:41

2 odpowiedzi

Najlepsza odpowiedź

Myślisz o tym niepotrzebnie skomplikowany. Możesz po prostu iterować przez tablice podrzędne i dołącz do nich z przestrzenią.

def output_image
  @image.each do |image|
    puts image.join(' ')
  end
end
1
Eyeslandic 16 luty 2017, 19:06

{x0}} przychodzi na ratunek tutaj. Dołącz do wierszy za pomocą miejsca, dołącz wynik z powrotem wózka, zysku.

puts @image.map { |inner| inner.join ' ' }.join $/
#⇒ 0 0 0 0
#  0 1 0 0
#  0 0 0 1
#  0 0 0 0
1
Aleksei Matiushkin 16 luty 2017, 19:06