任何人有任何好的FizzBuzz类型的问题不在该 FizzBuzz问题?
我正在采访某人,而FB相对众所周知而且难以记忆,所以我寻找创意的第一站就是我的新成瘾.
下面的程序可以根据需要运行,但是如何减少if语句的数量.有人告诉我,如果你的函数包含2个或更多if语句,那么你做错了.有什么建议?我尝试过使用switch语句,但由于案例不能成为布尔值,因此无效.
for(int i = 1; i < 100; i++)
{
if(i % 10 == 3)
{
System.out.println("Fizz" + "(" + i + ") 3%10");
}
if(i / 10 == 3)
{
System.out.println("Fizz" + "(" + i + ") 3/10");
}
if(i % 10 == 5)
{
System.out.println("Buzz" + "(" + i + ") 5%10");
}
if(i / 10 == 5)
{
System.out.println("Fizz" + "(" + i + ") 5/10");
}
if(i / 10 == 7)
{
System.out.println("Fizz" + "(" + …Run Code Online (Sandbox Code Playgroud) 我目前正在学习F#并尝试过(非常简单的)FizzBuzz示例.
这是我最初的尝试:
for x in 1..100 do
if x % 3 = 0 && x % 5 = 0 then printfn "FizzBuzz"
elif x % 3 = 0 then printfn "Fizz"
elif x % 5 = 0 then printfn "Buzz"
else printfn "%d" x
Run Code Online (Sandbox Code Playgroud)
什么解决方案可以更优雅/简单/更好(解释原因)使用F#来解决这个问题?
注意:FizzBuzz问题通过数字1到100,每3个打印Fizz,每5个打印Buzz,3和5的每个倍数打印FizzBuzz.否则,简单显示数字.
谢谢 :)
阅读编码恐怖,我刚刚遇到了FizzBuzz.
原帖是在这里:编码恐怖:为什么程序员不能..程序?
对于那些不知道的人:FizzBuzz是一款非常受欢迎的儿童游戏.从1到100计数,每次一个数字可以被3调用"Fizz"整除,每次一个数字可以被5调整为"Buzz",并且每次数字可以被3和5整除时,调用"FizzBuzz而不是数
但这一次,我刚刚开始编码.这是一分钟的工作,但有几件我不喜欢的事情.
这是我的代码
public void DoFizzBuzz()
{
var combinations = new Tuple<int, string>[]
{
new Tuple<int, string> (3, "Fizz"),
new Tuple<int, string> (5, "Buzz"),
};
for (int i = 1; i <= 100; ++i)
{
bool found = false;
foreach (var comb in combinations)
{
if (i % comb.Item1 == 0)
{
found = true;
Console.Write(comb.Item2);
}
}
if (!found)
{
Console.Write(i);
}
Console.Write(Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我是哈斯克尔的新手,我读完并消化了" 了解你是一件好事",并尝试了一些事情.对于我的第一个项目,我想尝试经典:FizzBuzz.所以我想出了以下代码:
import System.IO
fizzBuzz :: (Integral a) => a -> String
fizzBuzz num
| fizz && buzz = "FizzBuzz"
| fizz = "Fizz"
| buzz = "Buzz"
| otherwise = show num
where fizz = num `mod` 3 == 0
buzz = num `mod` 5 == 0
main = print $ map fizzBuzz [1..100]
Run Code Online (Sandbox Code Playgroud)
工作得很好,除了我有一个很难读的相当密集的列表.所以我尝试了这个主要功能:
main = map putStrLn $ map fizzBuzz [1..100]
Run Code Online (Sandbox Code Playgroud)
这给了我错误Couldn't match expected type 'IO t' against inferred type '[IO ()]'.我尝试了六件事,似乎没有任何帮助.做我想做的事情的正确方法是什么?
我刚从求职面试回家,面试官让我写一个程序:
它应该从1到100,并打印...
如果它是3的倍数,"ping"
如果它是5的倍数,"pong"
Else,打印数字.
如果它是3和5的倍数(如15),它应该打印"ping"和"pong".
我选择了Javascript,并想出了这个:
for (x=1; x <= 100; x++){
if( x % 3 == 0 ){
write("ping")
}
if( x % 5 == 0 ){
write("pong")
}
if( ( x % 3 != 0 ) && ( x % 5 != 0 ) ){
write(x)
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,我对我的解决方案非常不满意,但我无法找到更好的解决方案.
有谁知道更好的方法吗?它检查了两次,我不喜欢它.我在家里做了一些测试,没有成功,这是唯一一个返回正确答案的测试......
在了解了迭代器类方法和生成器之后,我使用每个习语测试了简单的Fizz Buzz解决方案的性能特征:
>>> from timeit import timeit
>>> timeit('tuple(fizzbuzz.FizzBuzzIterator(10))', 'import fizzbuzz')
13.281935930252075
>>> timeit('tuple(fizzbuzz.fizz_buzz_generator(10))', 'import fizzbuzz')
7.619534015655518
Run Code Online (Sandbox Code Playgroud)
根据timeit生成器函数比迭代器类快约1¾倍.
我的问题是:为什么这个Fizz Buzz生成器明显比这个Fizz Buzz Iterator类快?
class FizzBuzzIterator:
def __init__(self, low, high=None):
if high is None:
self.high = low
self.current = 1
else:
self.high = high
self.current = max(low, 1)
def __iter__(self):
return self
def next(self):
if self.current > self.high:
raise StopIteration
else:
c = self.current
self.current += 1
if (c % 5 + c % …Run Code Online (Sandbox Code Playgroud) 在阅读了Wolfbyte关于Enterprise FizzBuzz 的答案后,我想到了什么构成了"企业"程序.
什么使应用程序或软件开发过程成为企业?
编辑:似乎企业这个词有很多消极性.有没有人真正喜欢编写企业级应用程序?
我正在做这个问题集"FizzBuzz",我的switch语句给了我一些问题,这是我的代码:
func fizzBuzz(n: Int) -> String {
switch n {
case n % 3 == 0: print("Fizz")
case n % 5 == 0: print("Buzz")
case n % 15 == 0:print("FizzBuzz")
}
return "\(n)"
}
Run Code Online (Sandbox Code Playgroud)
如果你可以提供指针/提示,而不是给我正确的代码,那就会膨胀:D我更喜欢自己解决它,但是一些提示可以让我走出这个洞.
有人可以为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");
} …Run Code Online (Sandbox Code Playgroud) fizzbuzz ×10
javascript ×2
c# ×1
enterprise ×1
f# ×1
generator ×1
haskell ×1
if-statement ×1
iterator ×1
java ×1
optimization ×1
performance ×1
pretty-print ×1
python ×1
swift ×1