Kita semua pernah mendengar tentang masalah Fizz Buzz, tetapi apa yang terjadi ketika Anda mencoba menerapkannya dengan lebih banyak faktor? Fizz Buzz Crackle Pop!
Tantangan
Tulis program lengkap yang mengambil input integer n , lalu n tupel yang berisi integer dan string, lalu integer lain (> 1) k, dengan demikian:
n int1 str1 int2 str2 (...) intn strn k
Anda dapat mengambil baris ini dari baris perintah atau STDIN.
Kemudian, untuk semua bilangan bulat 1 hingga k, jika itu dapat dibagi oleh salah satu dari int1 , int2 ... intn , output semua str yang sesuai dalam urutan input, diikuti oleh baris baru. Jika tidak, maka cukup output integer, diikuti oleh baris baru.
Misalnya dengan input
3 2 Fizz 3 Buzz 5 Crackle 10
kita mendapatkan
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Tetapi dengan input (perhatikan perubahan pesanan)
3 3 Buzz 2 Fizz 5 Crackle 10
kita mendapatkan
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Newline tambahan opsional dapat diterima.
Kode terpendek dalam byte menang.
Suntingan:
Jelas saya sangat ketinggalan, maaf.
- Input dari
konsol dan STDIN, yang lainnya mendapat +5 byte (: c) dimana saja - Program lengkap, silakan.
- Asumsikan string tidak kosong untuk strs
- Tidak ada jaminan untuk keunikan int
Contoh program C ++ (terbatas pada 20 karena saya malas):
#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.