2015-02-17 2 views
0

Я пытаюсь решить головоломку, которая принимает целые числа и преобразует их в сложную строку больших цифр. Я иду на путь хранения массива каждой цифры, пытаясь объединить каждую строку подмассива в создание окончательной объединенной строки. Так,Как печатать несколько строк из каждого подматрица массива?

digits = [ 
["-**--", 
"*--*-", 
"*--*-", 
"*--*-", 
"-**--", 
"-----"], 

["--*--", 
"-**--", 
"--*--", 
"--*--", 
"-***-", 
"-----"] 
] 

digits.each_with_index do |number, index| 
    number.each_with_index do |line, row| 
     print index, row, line, "\n" 
    end 
end 

дает мне:

00-**-- 
01*--*- 
02*--*- 
03*--*- 
04-**-- 
05----- 
10--*-- 
11-**-- 
12--*-- 
13--*-- 
14-***- 
15----- 

Как сделать так, что это дает мне:

00-**----*-- 
01*--*--**-- 
02*--*---*-- 
03*--*---*-- 
04-**---***- 
05---------- 
+1

К сожалению для закрытия вашего вопроса временно. Он очень похож на ваш [последний] (http://stackoverflow.com/questions/28519771/how-to-convert-numbers-into-multiple-lines-of-digits), но это не точный дубликат, потому что в этом вопросе вы используете массивы вместо хешей для хранения данных. Тем не менее, я прошу вас, пожалуйста, найдите время, чтобы просмотреть ответы на свои предыдущие вопросы, найти ответ, который работает для вас, и пометить его как принятый. –

ответ

1

Вы можете сделать

digits.transpose.each_with_index { |a, index| puts "#{index}#{a.join}" } 

выход:

0-**----*-- 
1*--*--**-- 
2*--*---*-- 
3*--*---*-- 
4-**---***- 
5---------- 

Точный выход:

digits.transpose.each_with_index { |a, index| puts "%02d%s" % [index,a.join] } 

выход:

00-**----*-- 
01*--*--**-- 
02*--*---*-- 
03*--*---*-- 
04-**---***- 
05---------- 
+0

Вы показали мне, что мой ответ был неправильным. – sawa

+0

Почему это было неправильно? Он работал отлично, индекс действительно не нужен, это просто для проверки работоспособности с моей стороны. – ppadru1

+0

@ ppadru1 Ничего страшного. Преуспевать! :-) Я дал обновление в последнее время, когда я пошел, чтобы получить телефон моей мамы. –

0
digits[0].size.times do |i| 
    printf "%02i%s%s\n", i, digits[0][i], digits[1][i] 
end 

дает

00-**----*-- 
01*--*--**-- 
02*--*---*-- 
03*--*---*-- 
04-**---***- 
05---------- 
Смежные вопросы