这是GitHub问题的解决方案。我正在查看解决方案,我想知道数组中的数字是指什么
LED时钟:你(自愿)在一个完全黑暗的房间里,除了 来自旧的LED数字闹钟的灯光。这是其中之一 使用HH:MM时间格式的4个7段显示的时钟。时钟是 配置为以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
答案 0 :(得分:1)
这些数字指的是" on"显示相应的数字时。显示数字" 0时,"六个部分是" on" (除中心段以外),因此索引0处的数字为6.当显示1时,只有两个段是" on,"所以索引1的数字是2.你明白了。
_ _ _
0) | | = 6 1) | = 2 2) _| = 5 3) _| = 5
|_| | |_ _|
_ _ _
4) |_| = 4 5) |_ = 5 6) |_ = 6 7) | = 3
| _| |_| |
_ _
8) |_| = 7 9) |_| = 6
|_| _|
答案 1 :(得分: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位置的数组(可能是空的)传递给方法。