2017-03-02 53 views
0

這是對GitHub.I一個問題的解決方案一直在尋找在解決方案,我想知道在數組中的數字指的是什麼是數組cells_per_number它交給值

LED時鐘:您(自願地)在除了 來自舊LED數字鬧鐘的光線之外的房間中是完全黑暗的。這是其中一個 時鐘與4個七段顯示器使用HH:MM時間格式。時鐘爲 ,配置爲以24小時格式顯示時間,如果不使用,前導數字將爲 空白。什麼時候房間的最黑暗時刻是 ?

def compute_brightness(units) 
    cells_per_number = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ] 

    units.each_with_object({}) do |t, hash| 
     digits = t.split('') 
     hash[t] = digits.map { |d| cells_per_number[d.to_i] }.reduce(:+) 
    end 
end 

回答

1

這些數字指的是顯示相應數字時「on」的段數。當顯示數字「0」時,六個分段爲「開」(除中心分段外),因此索引0處的數字爲6.顯示1時,只有兩個分段處於「開」,因此索引1處的數字爲你明白了。

_        _    _ 
0) | | = 6  1) | = 2  2) _| = 5  3) _| = 5 
    |_|    |    |_    _| 

        _    _    _ 
4) |_| = 4  5) |_ = 5  6) |_ = 6  7) | = 3 
    |    _|    |_|    | 

    _    _ 
8) |_| = 7  9) |_| = 6 
    |_|    _| 
0

@Jordan已回答了您的具體問題,但代碼並非針對所述問題的完整解決方案。這是一種做法。

lpd = { 0=>6, 1=>2, 2=>5, 3=>5, 4=>4, 5=>5, 6=>6, 7=>3, 8=>7, 9=>6 } 

def min_leds(lpd, range) 
    leds(lpd, range).min_by(&:last).first 
end 

def max_leds(lpd, range) 
    leds(lpd, range).max_by(&:last) 
end 

def leds(lpd, range) 
    lpd.select { |k,_| range.cover?(k) } 
end 

darkest = 
    [ *[ 
     [max_leds(lpd, (1..1)), max_leds(lpd, (0..2))], 
     [[0,0], max_leds(lpd, (1..9))] 
    ].max_by { |(_,a), (_,b)| a+b }, 
    max_leds(lpd, (0..5)), 
    max_leds(lpd, (0..9)) 
    ].transpose.first.join.insert(2,':') 
    #=> "10:08" 

lightest = [0, min_leds(lpd, (1..9)), 
      min_leds(lpd, (0..5)), 
      min_leds(lpd, (0..9)) 
      ].join.insert(2,':') 
    #=> "0111" 

爲了使溶液更加逼真,爛花LED的位置陣列(可能是空的)應被傳遞給該方法。