RubyMonk系列题目

来源:转载

之前发现一个外国的ruby学习网站http://www.rubymonk.com  但是鉴于自己的英文水平不咋滴,一直都没怎么关注。最近硬着头皮读了下,其实读英文的技术文章好像没想象中那么难,很多词汇都大概能理解,实在不懂的一个复制粘贴也就大概懂了。之所以不想去翻阅英文书籍大概就是因为看到一大堆要绞尽脑才能读懂的文字产生了恐惧感吧!以后要开始进修英文的ruby资料才行,中文版的资料更新实在是太慢了,完全跟不上脚步。

可能鉴于部分童鞋跟我一样不怎么稀饭读英文的东东,水平也跟我一样那么菜。所以小锅来个大牺牲+殉难为大家搞下翻译,把rubymonk上的英文题目翻译过来。感觉很适合新人,高端的大牛们请无视吧。嗯,准备搞个专题系列吧。有啥不对的望多给些建议和意见。题目答案将在另外一个帖子给出,或者可以自己到rubymonk的网站上去查询(好吧,我不会告诉你这个网站加载有些慢的),大牛们可以给出自己更犀利的解题方法。(大牛曰:这些那么菜的问题还要多犀利?难道要加个异常处理)

一、数组篇

1在下面的代码中,尝试提取超过五个字符的字符串。

names = ['rock', 'paper', 'scissors', 'lizard', 'spock'] 2对于开发者而言,ruby之所以能这么流行的一个原因是它有着非常直观的API。很多时候,你都能在你脑海中猜到能完成你想要的目标的一些方法名称。尝试猜测一个你需要使用的方法来删除下面所给数组为“5”的元素。(注意是猜测哦,好吧,其实我早就知道了)
 [1,3,5,4,6,7]
3从下面给出的数组中删除所有给出的偶数
[1,2,3,4,5,6,7,8,9]
 原文:(Doing this in languages like C or Java would take you a lot of boiler plate code. The beauty of Ruby is in its concise but readable code.)          4给定一个包含有几个字符串的数组,编写一个length_finder方法,该方法接收一个数组为参数并够返回一个新数组,该新数组为对应数组参数的每个字符串元素的长度。(别吐槽我的水平了,我知道这个翻译的那是怎么听怎么别扭,应该能明白大概意思吧)
                                def length_finder(input_array)
                                       #your code
                                end

4给定一个包含有多个单词的句子,编写一个名为“find_frequency”的方法,该方法有两个参数“sentence”和“word”,这两个参数都是字符串对象。并返回某一单词在该句子中的出现频率。示例:传入 'Ruby is The best language in the World' 和 'the',则返回“ 2”

提示: Array#count  (用法自个儿查去)

def find_frequency(sentence, word)
# Your code here
end

二、字符串篇

 

1创建一个名为'random_select'的方法,该方法有两个参数,一个是数组对象array,另一个是数字n。该方法将返回从给定数组中随机选取n个新的元素组成新的数组。例如:给定数组[1,2,3,4,5]和2应该返回随机从这个数组中随机挑选的两个数字所组成的新数组。

PS: 两次调用该方法最好返回不同的结果。

def random_select(array, n)
# your code here
end

2创建一个名为 'sort_string'的方法,该方法接收一个字符串对象,并对这个字符串中的单词按照长度的升序进行重排序。假设没有其他的标点符号而只有单个空格分隔该字符串。例如:给定"Sort words in a sentence", 将返回"a in Sort words sentence".

def sort_string(string)
# your code here
end

 

三、迭代器篇
1复制存储在数组变量source中值小于4的元素到数组变量destination
                             def array_copy(destination) source = [1, 2, 3, 4, 5] 
                              # your code destination end
2迭代是在Ruby _blocks_用法最常被引用的的例子之一 。 Array#each方法接收数组中的每一个元素然后依次传递到代码块中。你会发现for循环在ruby中几乎不被使用。Array#each和 its siblings are the de-facto standard。(~~(╯﹏╰)b)
             现在,再做一遍上面我们用for循环完成的题目,但是,这次要用新的方法咯!
                                     def array_copy(destination)
                                         source = [1, 2, 3, 4, 5]
                                                # your code
                                                  destination
                                    end

四、正则篇
1将下面给出字符串中的大写字母都改为数字“0”
                                   'RubyMonk Is Pretty Brilliant'

五、构建一个计算器

创建一个计算器类,能够在同一时间完成两个数字的加减法。(不太懂,原文:Create a class Calculator, which performs the addition and subtraction of two numbers at a time. The sample code explains the expected API.)

class Calculator
def add(a, b)
# your code here
end

 

def subtract(a, b)
# your code here
end
end

 六、类与面向对象


分享给朋友:
您可能感兴趣的文章:
随机阅读: