`
dongbin
  • 浏览: 245749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

《Ruby Quiz》 中Quiz 2的解答

阅读更多
我的这个解法书里面没有,就贴出来吧。

module LCD

  SCREEN=[
        [0,1,3,4,5,6], # 0 LCD
        [3,6], # 1 LCD
        [0,2,3,4,5], # 2 LCD
        [0,2,3,5,6], # 3 LCD
        [1,2,3,6], # 4 LCD
        [0,1,2,5,6], # 5 LCD
        [0,1,2,4,5,6], # 6 LCD
        [0,3,6], # 7 LCD
        [0,1,2,3,4,5,6], # 1 LCD
        [0,1,2,3,6] # 1 LCD
       ]

  CHARS=["_","|", "_", "|", "|", "_", "|"]

  FILL=[lambda{ |size| Array.new(size){ |i| [0,1+i]}}, # 0
        lambda{ |size| Array.new(size){ |i| [1+i,0] }}, # 1
        lambda{ |size| Array.new(size){ |i| [size,1+i] }}, # 2
        lambda{ |size| Array.new(size){ |i| [1+i,size+1] }}, # 3
        lambda{ |size| Array.new(size){ |i| [size+1+i,0] }}, # 4
        lambda{ |size| Array.new(size){ |i| [2*size,1+i] }}, # 5
        lambda{ |size| Array.new(size){ |i| [size+1+i, size+1] }}, # 6
       ]

  def init_array(size)
    ret = Array.new(3+size*2){ Array.new(3+size){ ' '}}
  end

  def lcd_single(num, size=1)
    "\n"+join(fill(init_array(size), SCREEN[num],size))
  end

  def lcd(num, size=1)
    data = []
    num.to_s.each_byte do |c|
      data.push(fill(init_array(size), SCREEN[c.chr.to_i],size))
    end

    join(sum(data))

  end

  def sum(data)
    data.inject do |sum, item|
      sum.each_index do |index|
        sum[index] = sum[index] + item[index]
      end
    end
  end

  def fill(data,screen,size)
    screen.each do |item|
      FILL[item].call(size).each do |row,col|
        data[row][col]=CHARS[item]
      end
    end
    data
  end

  def join(data)
    data.map{ |row| row.join}.join("\n")
  end

end

分享到:
评论

相关推荐

    Best of Ruby Quiz

    这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题解答,旨在提升编程技能。 Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto...

    《RUBY QUIZ - The Solitaire Cipher 》

    通过查看提供的文件列表,我们看到有“Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf”,这很可能是《Pragmatic Programmer》出版社出版的一本关于Ruby Quiz的最佳解答合集,其中可能包含了对这个具体挑战的...

    《Best of Ruby Quiz》

    读者大多可以想出一种办法来解决这些问题,往往还能 通过思考和重构找到第二种优雅的设计,但这本书却给你列出了第三种、第四种真正精巧的解决方案——充分利用Ruby技巧才能得出的解决方案。

    ruby_quiz.rar

    2. **元编程**:Ruby的强大之处在于其元编程特性,允许你在运行时修改和创建代码,这在书中的一些问题中会有所体现,例如定义方法、动态属性、类和模块的扩展等。 3. **正则表达式**:Ruby的正则表达式功能强大且...

    Best.of.Ruby.Quiz

    2. **面向对象编程**:Ruby是面向对象的语言,书中将详细讲解类、对象、继承、模块等核心概念。读者将了解到如何定义类,创建对象,以及如何利用继承和模块来组织和复用代码。 3. **块、迭代器与闭包**:Ruby中的块...

    Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf

    综上所述,《Pragmatic Bookshelf Best of Ruby Quiz Mar 2006》是Ruby开发者提升技能、扩展知识视野的宝贵资料,通过解答书中提出的各种问题,读者可以深入理解Ruby语言的精髓,提高编程能力,并了解业界的最佳实践...

    Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006

    #### 一、《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》概述 - **书籍标题**:本书名为《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》,是一本专注于Ruby编程语言的经典练习册。 - **书籍内容**:...

    Ruby语言中英文教程.rar

    内含 12 本 Ruby 语言中英文教程资源,本资源下载后解压缩将得到以下图书: Programming Ruby 2nd.pdf Agile Web Development with Rails 2nd ed.pdf Agile Web Development with Rails.pdf Best.of.Ruby.Quiz.pdf O...

    MongoDB and Ruby

    ### MongoDB与Ruby:深入探索文档型数据库及其在Ruby中的应用 #### 一、MongoDB简介 MongoDB是一款基于分布式文件存储的开源文档型数据库系统,它由C++编写而成,适用于处理大规模数据集。MongoDB的设计哲学是为了...

    kinggnu-quiz2

    【描述】"kinggnu-quiz2" 的描述中没有提供具体的信息,这通常意味着我们需要查看项目源代码或文档来获取详细信息。这可能是一个使用特定编程语言(如Python、JavaScript等)构建的Web应用程序,用于创建和管理技术...

    BestofRubyQuizFreePdfBook.pdf 英文原版

    Best of Ruby Quiz – Free Pdf Book

    quiz-app-2

    "quiz-app-2"似乎是一个基于编程的项目,可能是一个在线问答应用的第二版。由于没有具体的标签,我们可以从常见的编程实践和应用开发的角度来解析这个项目。 在开发一个问答应用时,通常会涉及到以下几个核心知识点...

    Rails相关电子书汇总二

    文件名 "Best of Ruby Quiz Volume One.pdf" 暗示了一本书籍,可能是系列中的第一卷,专门收集了关于Ruby编程的智力挑战或问题解答。这种类型的书籍通常会涵盖各种编程技巧、最佳实践以及对语言特性的深入理解,对于...

    J-Quiz-开源

    2. `quiz.hiscore`:高分榜文件,存储了用户在测验中取得的最高分数,可能是以文本或数据库格式记录,以便程序读取并展示给用户,激发他们挑战更高的分数。 3. `lookmain.rb`:这是一个Ruby脚本,可能是主界面或者...

    Quiz_project_2

    项目2(标题) 团队 ,,和 概述 准备作为软件开发人员(网络)进行第一次面试? 好吧,我们为您准备了游戏。 申请Tech Job Corp ^的工作,为现实生活中的下一次面试做好准备,并为您的下一次面试做准备。 ^ Tech ...

    notes:WDI课程注意事项

    Ruby Quiz DRY 在 Rails 中使用 http 方法 开发板 模特协会 JSON API 结构 第一阶段:基础 快速回顾: https : //gist.github.com/harryworld/ceebff030e0933516b29 编程历史 GitHub jQuery 咖啡脚本 功能 ...

    imba-political-quiz:世界上最小的政治测验。 印巴版

    项目文件名列表中提到了`imba-political-quiz-master`,这通常表示它是项目的主要分支或源代码仓库。Imba是一种编程语言,设计用于构建Web应用,它结合了JavaScript的灵活性和Ruby的简洁性,提供了高效的DOM操作和...

    Code-Quiz

    2. **题目库管理**:平台需要有一个题库,包含各种难度级别的编程题目。这些题目可能包括编写函数、解决算法问题或修复代码片段。题目数据可能存储在数据库中,每个题目有相应的描述、输入/输出示例、测试用例以及...

Global site tag (gtag.js) - Google Analytics