Hepimiz ol 'Fizz Buzz problemini duyduk, ancak daha fazla faktörle uygulamaya çalıştığınızda ne olur? Fizz Buzz Crackle Pop!
Meydan okuma
Bir tamsayı girişi n , sonra bir tamsayı ve bir dize içeren n tuples, sonra başka bir tamsayı (> 1) k alan tam bir program yazın :
n int1 str1 int2 str2 (...) intn strn k
Bu satırı komut satırından veya STDIN'den alabilirsiniz.
O herhangi biri tarafından bölünebilir ise, daha sonra bütün tamsayılar 1, k için INT1 , INT2 ... intn , çıkış karşılık gelen tüm str sonrasında bir yeni satır giriş sırayla s. Değilse, tamsayıyı ve ardından bir satırsonu çıkar.
Örneğin, girdi ile
3 2 Fizz 3 Buzz 5 Crackle 10
aldık
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Ancak girdi ile (sipariş değişikliğine dikkat edin)
3 3 Buzz 2 Fizz 5 Crackle 10
aldık
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
İsteğe bağlı sondaki yeni satır kabul edilebilir.
Bayt cinsinden en kısa kod kazanır.
Düzenlemeler:
Açıkçası çok özledim, üzgünüm.
- Dan Girdiler
(: c) konsolu ve STDIN, başka bir şey 5 bayt alıryerde - Tam programlar lütfen.
- Strs için boş olmayan dizeler varsayalım
- Ints benzersizliği için garanti yok
Örnek C ++ programı (tembel olduğum için 20 ile sınırlı):
#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;
}
Generalized Fizz Buzz.