我们都听说过Fizz Buzz问题,但是当您尝试将其应用到更多因素时会发生什么呢?嘶嘶声嗡嗡声爆裂!
挑战
编写一个完整的程序,该程序接受一个整数输入n,然后是包含一个整数和一个字符串的n个元组,然后是另一个整数(> 1)k,如下所示:
n int1 str1 int2 str2 (...) intn strn k
您可以从命令行或STDIN接受此行。
然后,对于所有1到k的整数,如果它可以被int1,int2 ... intn中的任何一个整除,则按输入顺序输出所有对应的str,后跟换行符。如果不是,则只输出整数,然后输出换行符。
例如,输入
3 2 Fizz 3 Buzz 5 Crackle 10
我们得到
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
但是有输入(请注意顺序更改)
3 3 Buzz 2 Fizz 5 Crackle 10
我们得到
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
可选的尾随换行符是可以接受的。
以字节为单位的最短代码获胜。
编辑:
显然,我错过了很多,抱歉。
- 来自
控制台和STDIN的输入,其他任何地方均可获得+5字节(:c) - 请完整的程序。
- 假定str的非空字符串
- 不保证整数的唯一性
示例C ++程序(由于懒惰,限制为20):
#include <iostream>
#include <string>
using namespace std;
int main() {
string names[20];
int mods[20], n, max;
cin >> max >> n;
for (int i=0; i<n; i++) {
cin >> mods[i] >> names[i];
}
for (int i=1; i<=max; i++) {
bool found = false;
for (int j=0; j<n; j++) {
if (i % mods[j] == 0) {
found = true;
cout << names[j];
}
}
if (!found)
cout << i;
cout << endl;
}
return 0;
}
5
输入是否需要如此严格?或者我们可以接受一个hashtable / dictionary / array / etc。语言的本机格式?
—
AdmBorkBork
另外,欢迎来到PPCG!
—
AdmBorkBork'2
如果两个数字相同怎么办?它们将始终是唯一的正整数吗?
—
戴维·康拉德
这些数字有什么保证:它们都是正数还是至少非零数?字符串呢:它们都是非空的吗?
—
彼得·泰勒
更好的标题可能是
—
mbomb007
Generalized Fizz Buzz。