【问题标题】:Ruby Histogram formatting? [closed]Ruby直方图格式? [关闭]
【发布时间】:2013-11-15 15:39:41
【问题描述】:

我正在编写直方图,但遇到了问题。我不太确定如何将字母表中的字母放在直方图旁边,如 D: 2 所示。目前它们只是像这样相互打印:

A
B
C
D

0
0
0
2

这是我到目前为止的代码,任何需要添加/重新排列的想法,因为我很困惑!非常感谢!请不要使用宝石

class String

def frequency
letters = Hash.new(0)
self.gsub(/\s+/, ' ').upcase.delete(','+''+' ').each_char {|c| letters[c] += 1 }
letters = letters.sort_by {|x,y| y }
end

def histogram
myhash = Hash.new(0)
#freq = self.frequency;
self.each_char {|i| myhash[i] += 1}
('a'..'z').each { | c , v | puts myhash[c] } 

end
end

【问题讨论】:

  • 我们无法通过查看您不期望的内容来判断您的期望。而且,图片中的字符太小了,无论如何都无法阅读。
  • 如果你能把那个黑匣子做得更小一点,我将不胜感激。这让我头疼。
  • 请执行以下操作:(1)删除图片(2)将示例输出添加为文本(3)查看Ruby Style Guide(4)正确缩进代码。
  • 它只显示字母 A-Z,下面的数字表示该字母在某些给定文本中出现的次数,我现在会修复这些东西 ^
  • 请听从@screenmutt的建议,虽然你已经接受了一个答案(这让我们很多人都在摇头或摇头),因为其他人将来会读到你的问题,你应该向他们表达它正确。这也对您有利;一个聪明的答案所带来的正面印象往往少于一个草率问题的负面印象。

标签: ruby arrays hash histogram


【解决方案1】:

没有易于复制粘贴的测试代码,我无法在短时间内给出经过验证的答案。也许您可以通过测试用例提供更多代码。正如其他人指出的那样,这将不会打印直方图,而是打印一个表格,其中包含从“small a”到“small z”的字母以及它们在字符串中出现的频率。

几个指针

  • print_character_count 中重命名histogram
  • 像这样遍历 a-z ('a'..'z').each { | c |放 "#{c} #{myhash[c]}" }

将导致以下输出:

"notananswer".print_character_count
a 2
b 0
c 0
d 0
e 1
...

【讨论】:

  • 非常感谢您的帮助菲利克斯!现在排序只是在myhash之前缺少#{c}:D再次感谢:)
  • 菲利克斯,那不是histogram
  • @CarySwoveland 他的解决方案帮助我解决了我的问题,现在是一个有效的直方图 :)
  • @CarySwoveland:你是对的 - 感谢您的指出!我编辑了我的答案以明确这一点。无论如何,问题不在于直方图,而在于格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-10-06
  • 1970-01-01
相关资源
最近更新 更多