2013-11-15 57 views
0

我正在寫直方圖,並遇到了問題。我不太知道如何讓字母表的字母旁邊會有怎樣的直方圖,如d:2。在他們之後,對方只是打印這樣的時刻:Ruby柱狀圖格式?

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 
+0

我們不能告訴你看着,你不要指望有什麼期望。此外,圖片中的字符太小,無法閱讀。 – sawa

+0

如果你想讓這個黑盒子變小一點,我將不勝感激。這讓我很頭疼。 –

+1

請執行以下操作:(1)刪除圖片(2)以文本形式添加示例輸出(3)查看[Ruby風格指南](https://github.com/bbatsov/ruby-style-guide) (4)正確縮進您的代碼。 – screenmutt

回答

1

Witout易於複製粘貼測試代碼,我不能在短時間內給出一個驗證的答案。也許你可以用一個測試用例提供更多的代碼。正如其他人指出的那樣,而不是會打印一個直方圖,但會顯示一個從「小a」到「小z」的字母以及它們出現在字符串中的頻率。在print_character_count

  • 迭代一個-Z這樣

    幾個指針

    • 重命名histogram( '一個' .. 'Z'),每個{| c |卻將 「#{C}#{myhash [C]}」

    會導致以下的輸出:

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

    非常感謝您的幫助felix!現在得到它排序只是缺少#{c}之前myhash:D再次感謝:) – user2058186

    +0

    菲利克斯,這不是[直方圖](http://en.m.wikipedia.org/wiki/Histogram)。 –

    +0

    @CarySwoveland他的解決方案幫助我解決了什麼是我的錯,現在是一個工作直方圖:) – user2058186