Ruby图形打印程序

Ruby图形打印程序,ruby,Ruby,我有一个散列并按以下模式打印: 投入1: { a: [1,2,3,4,5,6,7,8,9], b: [1,2,3,4,5,6], c: [2,3,4,5,6,7] } 产出1: A1 A2 A3 A4 A5 A6 A7 A8 A9 B1 B2 B3 B4 B5 B6 C2 C3 C4 C5 C6 C7 投入2: { a: [1,2,3,4,5,6,7], b: [2,3,4,5,6], c: [1,2,3,4,5,6,7] } 产出2: A1 A2 A3 A4

我有一个散列并按以下模式打印:

投入1:

{
  a: [1,2,3,4,5,6,7,8,9],
  b: [1,2,3,4,5,6],
  c: [2,3,4,5,6,7]
}
产出1:

A1 A2 A3 A4 A5 A6 A7 A8 A9
B1 B2 B3 B4 B5 B6
   C2 C3 C4 C5 C6 C7
投入2:

{
  a: [1,2,3,4,5,6,7],
  b: [2,3,4,5,6],
  c: [1,2,3,4,5,6,7]
}
产出2:

A1 A2 A3 A4 A5 A6 A7
   B2 B3 B4 B5 B6
C1 C2 C3 C4 C5 C6 C7
例如。 如果我们考虑输入1,那么期望是,解决方案应该在缺少的数字位置添加空白空间。 =>它应该返回:

[
  ["A1","A2","A3","A4","A5","A6","A7","A8","A9"], 
  ["B1","B2","B3","B4","B5","B6","","",""], 
  ["","C2","C3","C4","C5","C6","C7","",""]
] 

您可以为此使用集合、映射或每个

data = {a: [1,2,3,4,5,6,7,8,9],b: [1,2,3,4,5,6],c: [2,3,4,5,6,7]}
data.map{|k,v| (1..9).map{|a| data[k].include?(a) ? k.to_s.upcase() +a.to_s : ' '}}

hash.map{k,v|[k.to_s.upcase].product(v).map(&:join)}
这给出了大写字母与数字的组合,但在缺少的数字处添加了一个空格。这给出了大写字母与数字的组合,但在缺少的数字处添加了一个空格。data.map{k,v|v.compact.map{a|k.to_s.upcase()+a.to|s}您可以压缩数组以删除缺少的一个,需要将缺少的一个添加为空白数据。map{k,v |(1..9)。map{a | data[k]。包括?(a)?k.to|s.upcase()+a.to|s:'}