【问题标题】:Chomping inside an array在数组内咀嚼
【发布时间】:2012-01-30 23:58:40
【问题描述】:
puts (Array.new(200) {(1..100).to_a[rand(100)]}).group_by { |x| (x - 1) / 10 }.sort_by { |x| x }.map {|x, y| [10 * x + 1, "-" , 10 * (x + 1), "   ", "|", "  ", "*" * (y.length)]}

在上面的代码中,我需要在 map 块中的每个逗号之后进行 chomp。问题是无论我做什么,我都会得到以下输出:

1
-
10

|

*************************

我怎样才能在地图内咀嚼以使其看起来像下面这样

1-10    |  ********************

【问题讨论】:

  • 您好 - 我们很高兴您的问题得到解答并且您得到了帮助。但是请保留您的问题和答案,以防以后对其他人有所帮助。谢谢!
  • 不要删除你的cmets;这会破坏额外的上下文。

标签: ruby arrays chomp


【解决方案1】:
(Array.new(200) {(1..100).to_a[rand(100)]}).group_by { |x| (x - 1) / 10 }.sort_by { |x| x }.map {|x, y| [10 * x + 1, "-" , 10 * (x + 1), "   ", "|", "  ", "*" * (y.length)]}.collect { |a| a.join }.each { |a| puts a }

但如果你的目标是这样做,你为什么要首先创建嵌套数组?

a = Array.new(200) {(1..100).to_a[rand(100)]}
a = a.group_by { |x| (x - 1) / 10 }
a = a.sort_by { |x| x }
a = a.map { |x, y| "#{10 * x + 1} - {#10 * (x + 1)}   |  #{'*' * (y.length)}" }
a.each { |bag| puts bag }

通过一些清理,维护您的单行内容:

Array.new(200) { rand(100) + 1 }.group_by { |x| (x - 1) / 10 }.sort.map { |x, y| sprintf "%2d - %3d | %s" % [10 * x + 1, 10 * (x + 1), '*' * y.length] }.each { |l| puts l }

 1 -  10 | ********************
11 -  20 | *******************
21 -  30 | *************************
31 -  40 | ***********************
41 -  50 | ****************
51 -  60 | *******************
61 -  70 | *****************
71 -  80 | ****************
81 -  90 | ***********************
91 - 100 | **********************

【讨论】:

  • @user1179092 是;查看编辑——这就是为什么我说要查看 String 的 % 运算符。
  • @user1179092 查看编辑后的单行版本。 sprintf 和其他方法一样——为什么不呢?
【解决方案2】:

你不能在最后创建一个数组而只能创建一个字符串?

puts (Array.new(40) {(1..20).to_a[rand(20)]}).group_by { |x| (x - 1) / 10 }.sort_by { |x| x }.map {|x, y| %Q!#{10 * x + 1} - #{10 * (x + 1)}  |  #{"*" * (y.length)}!}

【讨论】:

    【解决方案3】:
    puts (Array.new(200) {(1..100).to_a[rand(100)]}).group_by { |x| (x - 1) / 10 }.sort.map{|x,y| "#{x*10+1}-#{10*(x+1)} | #{'*'*y.size}" }
    

    顺便说一句,当您不使用任何特定选项时,没有必要使用.sort_by { |x| x },在您的情况下只需.sort 就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多