pac*_*ner 8 javascript fizzbuzz
有人可以为FizzBuzz更正我的这段代码吗?似乎有一个小错误.下面的代码打印所有数字,而不是仅打印不能被3或5整除的数字.
编写从打印数的程序
1来100.但是对于三的倍数,打印"Fizz"而不是数字,并且对于五的倍数,打印"Buzz".对于三和五的倍数的数字,打印"FizzBuzz".
function isDivisible(numa, num) {
if (numa % num == 0) {
return true;
} else {
return false;
}
};
function by3(num) {
if (isDivisible(num, 3)) {
console.log("Fizz");
} else {
return false;
}
};
function by5(num) {
if (isDivisible(num, 5)) {
console.log("Buzz");
} else {
return false;
}
};
for (var a=1; a<=100; a++) {
if (by3(a)) {
by3(a);
if (by5(a)) {
by5(a);
console.log("\n");
} else {
console.log("\n");
}
} else if (by5(a)) {
by5(a);
console.log("\n");
} else {
console.log(a+"\n")
}
}
Run Code Online (Sandbox Code Playgroud)
Tre*_*xon 60
for (let i = 1; i <= 100; i++) {
let out = '';
if (i % 3 === 0) out += 'Fizz';
if (i % 5 === 0) out += 'Buzz';
console.log(out || i);
}
Run Code Online (Sandbox Code Playgroud)
有点发烧友,允许一些配置:
for (let i = 1; i <= 100; i++) {
let out = '';
if (i % 3 === 0) out += 'Fizz';
if (i % 5 === 0) out += 'Buzz';
console.log(out || i);
}
Run Code Online (Sandbox Code Playgroud)
/*Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”*/
var str="",x,y,a;
for (a=1;a<=100;a++)
{
x = a%3 ==0;
y = a%5 ==0;
if(x)
{
str+="fizz"
}
if (y)
{
str+="buzz"
}
if (!(x||y))
{
str+=a;
}
str+="\n"
}
console.log(str);
Run Code Online (Sandbox Code Playgroud)
无论如何,您的函数都会返回虚假值,但无论如何都会打印.不需要让这个过于复杂.
小提琴:http://jsfiddle.net/ben336/7c9KN/
与C#相比,使用FizzBuzz和JavaScript愚弄.
这是我的版本,受到更多rigid语言的影响:
function FizzBuzz(aTarget) {
for (var i = 1; i <= aTarget; i++) {
var result = "";
if (i%3 === 0) result += "Fizz";
if (i%5 === 0) result += "Buzz";
if (result.length ===0) result = i;
console.log(result);
}
}
Run Code Online (Sandbox Code Playgroud)
我喜欢结构和易读性.
现在,特雷弗·狄克逊巧妙所做的是继电器的语言的假y值(false,null,undefined,'')(空字符串,0以及NaN(非数字)),以缩短代码.
现在,该if (result.length ===0) result = i;行是多余的,代码将如下所示:
function FizzBuzz(aTarget) {
for (var i = 1; i <= aTarget; i++) {
var result = "";
if (i%3 === 0) result += "Fizz";
if (i%5 === 0) result += "Buzz";
console.log(result || i);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我们对||操作员进行中继说:"如果result为false,则打印迭代值(i)".很酷的技巧,我想我需要更多地使用JavaScript来吸收这种逻辑.
您可以看到其他示例(来自GitHub),其中包括以下内容:
for (var i=1; i <= 20; i++)
{
if (i % 15 == 0)
console.log("FizzBuzz");
else if (i % 3 == 0)
console.log("Fizz");
else if (i % 5 == 0)
console.log("Buzz");
else
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
这里没有变量,只需检查15,3和5的除法(我的上面只有3和5除以,但是有一个额外的变量,所以我想这对于那些关心或风格偏好的人来说是微基准测试).
至:
for(i=0;i<100;)console.log((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)
Run Code Online (Sandbox Code Playgroud)
这一切都在线,继承了0一个假值的事实,所以除了我们之前见过的技巧之外,你可以将它用于if-elseshortended version(? :)||.
这是上面更具可读性的版本,带有一些变量:
for (var i = 1; i <= 100; i++) {
var f = i % 3 == 0, b = i % 5 == 0;
console.log(f ? b ? "FizzBuzz" : "Fizz" : b ? "Buzz" : i);
}
Run Code Online (Sandbox Code Playgroud)
总而言之,你可以用不同的方式做到这一点,我希望你能找到一些在JavaScript中使用的漂亮技巧:)
| 归档时间: |
|
| 查看次数: |
29275 次 |
| 最近记录: |