เราทุกคนเคยได้ยินปัญหา ol Fizz Buzz แล้ว แต่จะเกิดอะไรขึ้นเมื่อคุณพยายามใช้กับปัจจัยอื่น ๆ Fizz Buzz Crackle Pop!
ความท้าทาย
เขียนโปรแกรมเต็มรูปแบบที่รับอินพุตจำนวนเต็มnจากนั้น n tuples ที่มีจำนวนเต็มและสตริงจากนั้นเป็นจำนวนเต็มอื่น (> 1) k ดังเช่น:
n int1 str1 int2 str2 (...) intn strn k
คุณสามารถใช้บรรทัดนี้จากบรรทัดคำสั่งหรือ STDIN
แล้วสำหรับจำนวนเต็มทั้งหมด 1 ถึง k ถ้ามันเป็นหารด้วยใด ๆ ของint1 , int2 ... intnผลผลิตทั้งหมดที่สอดคล้องSTR s เพื่อการป้อนข้อมูลตามด้วยการขึ้นบรรทัดใหม่ หากไม่ใช่ให้ส่งออกจำนวนเต็มตามด้วย newline
ตัวอย่างเช่นกับอินพุต
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)ที่ใดก็ได้ - โปรดใช้โปรแกรมเต็ม
- สมมติว่าสตริงที่ไม่ว่างเปล่าสำหรับ strs
- ไม่มีการรับประกันความเฉพาะตัวของ ints
ตัวอย่างโปรแกรม 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;
}
Generalized Fizz Buzzชื่ออาจจะดีกว่า