Best of Ruby Quiz

Best of Ruby Quiz

一本好玩的书,里面有一些有趣的题目, 每天一题, 不亦乐乎
第一题 LCD Numbers(电梯里面的数字见过吧, 把用户输入的数字转换为LCD的数字, 长7个字, 高7个字)

我的代码(初学者,大家就原谅则个)

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

你可能感兴趣的:(Best of Ruby Quiz)