quiz2 LCD 数字
题目意图:输出类似LCD风格的数字,内容由命令行参数决定,并根据"-s"命令行参数指定其大小
思路:
需要的method
1) 转换方法,将正常的数字,转换为LCD风格的数字
2) 缩放方法,缩放LCD风格的数字
3) 处理命令行参数方法,读取输入的数字和给定的"-s"参数
笔记:
1、transpose
arr.transpose -> an_array
假设 arr是一个由数组组成的数组,并调换其行和列
a = [ [1,2], [3,4], [5,6] ]
a.transpose -> [[1,3,5], [2,4,6]]
2、
DIGITS = <<END_DIGITS.split("\n").map { |row| row.split(" # ") }.transpose
- # # - # - # # - # - # - # - # -
| | # | # | # | #| | #| #| # | #| | #| |
# # - # - # - # - # - # # - # -
| | # | #| # | # | # | #| | # | #| | # |
- # # - # - # # - # - # # - # -
END_DIGITS
将上面的字符串进行如下处理后转成数组
1) 按换行符号"\n"拆分为数组
2) 对数组中每个元素按"#"拆分为数组,并置回原数组中
3) 此时的数组形为[ [" - ", " "," - ",...], ["| | ", ...], [...], ... ] 共5个元素,每个元素都是包含十个元素的数组,
对大数组进行transpose操作后,大数组变为有十个元素,分别是0-9的lcd风格的数字显示。每个元素都是有5个元素的数组,并且这个5个元素构成一个lcd风格的数字显示,5个元素对应5行。
3、row = line.dup
dup obj.dup->other_obj
生成obj的一个浅拷贝--拷贝了obj的实例变量,但是没有拷贝他引用的对象。dup拷贝了obj的tainted (是否受信)状态。同时可参加Object#clone的描述。一般而言,在派生类中clone和dup或许有不同的语义。一般使用clone来复制一个对象以及它的内部状态,而dup通常使用派生对象的类来创建新的实例。
4、scale方法说明
def scale( num, size )
bigger = [ ]
num.each do |line| # 作为参数传进来的num其实就是一个数字的lcd显示,此处针对其5行字符做处理
row = line.dup
row[1, 1] *= size # row[1,1]指向下标为1,并且取1个长度的元素的组合,这个元素有可能是"-"或空格,
# 该元素总是应该随着size变化的
if row.include? "|" # 包含"|"的行,需要纵向缩放
size.times { bigger << row }
else
bigger << row # 不包含"|"的行,只要处理横向缩放,即"-"和空格即可
end
end # 缩放完成
bigger # 返回缩放后的数组
end
5、shift
arr.shift->obj 或nil
返回arr的第一个元素,并将它从数组中删除(其他元素左移一个位置)。如果数组为空,返回nil
args = ["-m", "-q", "filename"]
args.shift -> "-m"
args -> ["-q", "filename"]
6、n.each_byte do |c| ……
each_byte 把str中的每个字节传入给定的block
7、zip
enum.zip(<arg>) ->array
enum.zip(<arg>){|arr|block} -> nil
把参数转成数组,然后将enum中的元素和每个参数中对应的元素合并起来。结果是一个和enum具有相同数目元素的数组。其中的每个元素是一个含有n个元素的数组,此处的n比参数个数大1。如果任意一个参数的元素个数小于enum的元素个数,则使用nil。如果带有block,则以每个输出的数组为参数进行调用,否则返回由结果数组组成的数组。
a = [4, 5, 6]
b = [7, 8, 9]
(1..3).zip(a, b) -> [[1, 4, 7], [2, 5, 8], [3, 6, 8]]
"cat\ndog".zip([1]) -> [["cat\n", 1], ["dog", nil]]
(1..3).zip -> [[1],[2],[3]]
在LCD_number.rb中,
num = ([""] * (s * 2 + 3)).zip(*num)
将num这个数组的元素做一次行列转换,,转为有s*2+3个元素的数组,每个数组元素包含每行应显示的字符
/Files/bryanzk/LCD_number.rar
分享到:
相关推荐
《Best of Ruby Quiz》是一本聚焦于Ruby编程语言的精选问答集锦,旨在帮助开发者深入理解和掌握Ruby的各种特性。这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题...
读者大多可以想出一种办法来解决这些问题,往往还能 通过思考和重构找到第二种优雅的设计,但这本书却给你列出了第三种、第四种真正精巧的解决方案——充分利用Ruby技巧才能得出的解决方案。
通过查看提供的文件列表,我们看到有“Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf”,这很可能是《Pragmatic Programmer》出版社出版的一本关于Ruby Quiz的最佳解答合集,其中可能包含了对这个具体挑战的...
#### 一、《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》概述 - **书籍标题**:本书名为《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》,是一本专注于Ruby编程语言的经典练习册。 - **书籍内容**:...
《Pragmatic Bookshelf Best of Ruby Quiz Mar 2006》是一本专注于Ruby编程语言的书籍,由Pragmatic Bookshelf出版社出版。这本书的独特之处在于它采用了问答的形式,即"Quiz",来帮助读者深入理解和掌握Ruby的核心...
《Best.of.Ruby Quiz》是一本专为Ruby初学者精心编写的英文教程,旨在帮助新手逐步掌握这门强大而优雅的编程语言。Ruby作为一种动态、面向对象的脚本语言,因其简洁的语法和强大的元编程能力,深受开发者的喜爱。...
"Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf"是这本书的电子版,出版于2006年3月,由Pragmatic Bookshelf出版社发行。 Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力著称...
Best of Ruby Quiz – Free Pdf Book
Best.of.Ruby.Quiz.pdf O'Reilly - Ruby in a Nutshell (2001).chm OReilly.Ruby.Cookbook.Jul.2006.chm Rails Recipes (2006) .pdf Rolling with Ruby on Rails.chm Ruby On Rails Book (Save Ink Version).pdf ...
### MongoDB与Ruby:深入探索文档型数据库及其在Ruby中的应用 #### 一、MongoDB简介 MongoDB是一款基于分布式文件存储的开源文档型数据库系统,它由C++编写而成,适用于处理大规模数据集。MongoDB的设计哲学是为了...
object-array-quiz-lucyk22:由GitHub Classroom创建的object-array-quiz-lucyk22
测验 node.js 中的项目用于制作测验 连接到 Postgress 数据库 要在本地运行,请在 unix 命令控制台键入:> foreman ... 要在本地运行,Windows 命令控制台键入:> Quiz 在浏览器中: 要在云中运行: 在浏览器中: :
文件名 "Best of Ruby Quiz Volume One.pdf" 暗示了一本书籍,可能是系列中的第一卷,专门收集了关于Ruby编程的智力挑战或问题解答。这种类型的书籍通常会涵盖各种编程技巧、最佳实践以及对语言特性的深入理解,对于...
:closed_mailbox_with_raised_flag: Contribuindo para o Quiz应用程序 Para contribuir com Weather App,埃斯帕加斯地区: Bifurque esterepositório。 Crie um分支: git checkout -b <nome> 。 faasa ...
【标题】"ssd3 practical quiz2"是一个与软件工程相关的实践测验,可能是课程"Software System Development 3"(SSD3)的一部分。这个测验可能涉及了软件开发过程中的实际操作和问题解决,旨在检验学生在项目管理和...
"javascript-quiz"项目就是一个利用JavaScript构建的互动式测验,旨在帮助学习者检验和提升他们的JavaScript知识。这个测验可能是通过创建HTML页面来呈现问题,使用JavaScript处理用户交互,并可能结合CSS来实现视觉...
最后,压缩包中的"JavaScript-Quiz-Application--main"可能是一个主文件,它可能包含了整个项目的HTML、CSS和JavaScript代码。通过分析和理解这个文件,你可以看到上述技术是如何协同工作的,从而加深对Web开发的...
电影Trivia Quiz移动应用程序(2019) :brain: :video_game: 一个用Swift , Java , PHP和SQL编写的Android和iOS琐事测验移动应用。 它使用Google的Firebase服务处理用户帐户,并最初使用通过PHP scripts的MySQL ...