絎竴棰樸錛跡錛ゃ錛綍锝嶏絺锝咃綊锝?鐢墊閲岄潰鐨勬暟瀛楄榪囧惂, 鎶婄敤鎴瘋緭鍏ョ殑鏁板瓧杞崲涓篖CD鐨勬暟瀛? 闀?涓瓧, 楂?涓瓧)
鎴戠殑浠g爜(鍒濆鑰?澶у灝卞師璋呭垯涓?
class聽LCDNumber
聽聽@@number_code聽=聽{
聽聽聽聽"0"聽=>聽0b1110111,
聽聽聽聽"1"聽=>聽0b0100100,
聽聽聽聽"2"聽=>聽0b1011101,
聽聽聽聽"3"聽=>聽0b1101101,
聽聽聽聽"4"聽=>聽0b0101110,
聽聽聽聽"5"聽=>聽0b1101011,
聽聽聽聽"6"聽=>聽0b1111011,
聽聽聽聽"7"聽=>聽0b0100101,
聽聽聽聽"8"聽=>聽0b1111111,
聽聽聽聽"9"聽=>聽0b1101111
聽聽}
聽聽def聽initialize(num)
聽聽聽聽@num聽=聽num
聽聽end
聽聽def聽getZone(zone)
聽聽聽聽if聽((@@number_code[@num]聽&聽(1聽<<聽zone))聽!=聽0)聽
聽聽聽聽聽聽st聽=聽zone聽%聽3聽==聽0聽?聽"聽--聽"聽:聽(zone聽%聽3聽==聽1聽?聽"|聽"聽:聽"聽|")
聽聽聽聽else
聽聽聽聽聽聽st聽=聽zone聽%聽3聽==聽0聽?聽"聽聽聽聽"聽:聽"聽聽"
聽聽聽聽end
聽聽聽聽return聽st
聽聽end
聽聽attr_reader聽:num
end
def聽get(zone,聽array)
聽聽s聽=聽""
聽聽for聽lcd_number聽in聽array
聽聽聽聽s聽+=聽(zone聽%聽3聽==聽0聽?聽lcd_number.getZone(zone)聽:聽(zone聽%聽3聽==聽1聽?聽lcd_number.getZone(zone)聽+聽lcd_number.getZone(zone+1)聽:聽聽lcd_number.getZone(zone-1)聽+聽lcd_number.getZone(zone)))
聽聽end
聽聽return聽s
end
require聽"stringio"
while聽line=gets
聽聽a聽=聽Array.new
聽聽si聽=聽StringIO.new(line);
聽聽while聽c=si.read(1)
聽聽聽聽a.push(LCDNumber.new(c))聽if聽(c聽>=聽'0'聽&&聽c聽<=聽'9')
聽聽end
聽聽0.upto(6)聽{|line|聽puts聽get(line,聽a)}
end

]]>