R语言 对FizzBuzz问题的不同实现方法
FizzBuzz是R语言中的一个著名问题。Fizz “指的是3的倍数的数字,”Buzz “指的是5的倍数的数字,而 “FizzBuzz “指的是同时是3和5的倍数的数字。
方法1:用经典方法实现FizzBuzz的方法
这是一种解决FizzBuzz问题的经典方法,我们首先对序列范围内存在的每个数字运行for循环。我们使用’:’操作符创建了一个序列。现在在for循环中,我们有if, else if , 和else条件语句。然后我们将使用数字的模数运算符(%%)检查可除性。
如果数字能被15整除,我们就输出’FizzBuzz’,否则如果我们检查一个数字是否能被3整除,如果数字能被3整除,我们就输出’Fizz’,进一步检查是否能被5整除,如果数字能被5整除,我们就输出’Buzz’。如果这些条件都不满足,则执行else条件语句,直接输出数字的原样。
输出
方法2:比经典方案更有效的循环方案
在这个解决方案中,我们试图减少条件语句的数量。在这里,我们使用paste0,因为我们想在没有分隔符的情况下进行连接。让我们假设数字是9,我们检查以下条件 “9%%3==0″。下面条件的输出将是True。所以if条件里面的语句将被执行。我们将所有元素连接起来,其中o是一个空字符串,和一个新的字符串 “Fizz”。然后我们将所有的元素存回o中,最后显示每个数字的结果。
输出
方法3:使用函数实现FizzBuzz的方案
在这个方案中,我们试图消除它们的for循环,而利用了一个函数sapply()。sapply()函数接受一个向量作为输入,并返回函数对我们作为输入的序列的结果。然后,我们有一个函数的代码,其功能与解决方案2中解释的非常相似。
输出
方法4:使用包 “fizzbuzzR “实现FizzBuzz
这里我们利用’fizzbuzzR’包中的一个函数即’fizzbuzz’。它需要以下参数。
- start: 这是该循环的起始值
- end: 循环将在这个值结束
- mod1: 如果我们指定mod1为3,我们就表示我们将用’Fizz’替换所有3的除数。
- mod2: 如果我们指定mod2为5,那么我们将用’Buzz’替换所有5的除数。
输出