打印

2008-06-13 Ruby 测试题(00019)

2008-06-13 Ruby 测试题(00019)

液晶数字
输入阿拉伯数字串(可以认为小于10位)
输出其液晶表达式。
比如,输入678
输出:
_  _ _
|_  | |_|
|_|  | |_|
本帖最近评分记录
  • drive2me 威望 +10 谢谢! 2008-7-1 11:06
  • drive2me R币 +10 谢谢! 2008-7-1 11:06
  • drive2me 贡献 +10 谢谢! 2008-7-1 11:06

TOP

这题比较有意思~

本帖隐藏的内容需要回复才可以浏览
本帖最近评分记录
  • jmouse R币 +10 这次没啥好挑剔的。。。 2008-6-15 00:17
Digging ruby with Pickaxe,
Running agilely on rails

TOP

很久没来了
试试看看

TOP

参考了下楼上的,但是我的思路也是查表法

class LCD     
  def initialize(scale=1)   
    @number_map={"0"=>[1,1,1,0,1,1,1],   
    "1"=>[0,0,1,0,0,1,0],   
    "2"=>[1,0,1,1,1,0,1],   
    "3"=>[1,0,1,1,0,1,1],   
    "4"=>[0,1,1,1,0,1,0],   
    "5"=>[1,1,0,1,0,1,1],   
    "6"=>[1,1,0,1,1,1,1],   
    "7"=>[1,0,1,0,0,1,0],   
    "8"=>[1,1,1,1,1,1,1],   
    "9"=>[1,1,1,1,0,1,1]}   
    @width=scale+2   
    @height=2*scale+3   
  
    light=[[2..2+scale-1,1..1],   
    [1..1,2..2+scale-1],   
    [scale+2..scale+2,2..2+scale-1],   
    [2..2+scale-1,scale+2..scale+2],   
    [1..1,scale+3..scale*2+2],   
    [scale+2..scale+2,scale+3..scale*2+2],   
    [2..2+scale-1,scale*2+3..scale*2+3]]   
  
    @light_map={}   
    7.times do |i|   
      light[i][0].each do |x|   
        light[i][1].each do |y|   
          @light_map["#{x},#{y}"]=i   
        end  
      end  
    end  
  end  


这里是查表,与楼上的不一样感觉这样好看点

def display(digits)   
    digits=digits.to_s   
    str=""  
    @height.times do |y|   
      (digits.length*@width).times do |x|   
        if x%@width==0 or x%@width==@width-1   
          c="|"  
        else  
          c="-"  
        end  
        if @light_map["#{x%@width+1},#{y+1}"]   
          if @number_map[digits[x/@width..x/@width]][@light_map["#{x%@width+1},#{y+1}"]]==1   
            str<<c   
          else  
            str<<" "  
          end  
        else  
          str<<" "  
        end  
      end  
      str<<"\n"  
    end  
    return str   
  end     
end  
  
lcd = LCD.new(2)     
puts lcd.display("0024")  


本帖最近评分记录
  • jmouse R币 +10 很好! 2008-6-16 10:54

TOP

我想起来了,XAVIER还是被我挑出个小错来。。。
你用的是number,所以不能0开头。

TOP

引用:
原帖由 jmouse 于 2008-6-16 10:55 发表
我想起来了,XAVIER还是被我挑出个小错来。。。
你用的是number,所以不能0开头。
看来是这样的,0开头的话就被当成八进制了,这个问题从来没注意过,谢谢jmouse了~
也没想到太好的办法,只好规定用字符串了....
本帖隐藏的内容需要回复才可以浏览
Digging ruby with Pickaxe,
Running agilely on rails

TOP

好似傻了点……

本帖隐藏的内容需要回复才可以浏览

也只能处理“数字”的说……
本帖最近评分记录
  • jmouse R币 +10 2008-6-20 09:51

TOP

第一次来 还不知道规矩
本帖最近评分记录
  • dong123qwe R币 +1 来多几次就熟悉了, 2008-6-23 12:43

TOP

看答案。。。

TOP

呵呵,这个题目很有趣吗。有创意

TOP

本帖隐藏的内容需要回复才可以浏览


[ 本帖最后由 neohsiao 于 2008-7-13 12:18 编辑 ]

TOP

2008-08-29 11:01 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.60