fork download
  1. #include <iostream>
  2.  
  3. void skip(int n) {
  4. }
  5.  
  6. void print(int n) {
  7. std::cout << n;
  8. }
  9.  
  10. void (*test(int d, char const* c, void (*k)(int n), int n))(int n) {
  11. if (n % d) {
  12. return k;
  13. }
  14. std::cout << c;
  15. return skip;
  16. }
  17.  
  18. void fizzbuzz(int n) {
  19. auto k = print;
  20. k = test(3, "fizz", k, n);
  21. k = test(5, "buzz", k, n);
  22. k(n);
  23. }
  24.  
  25. int main() {
  26. for (int i = 1; i <= 20; ++i) {
  27. fizzbuzz(i);
  28. std::cout << '\n';
  29. }
  30. }
  31.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz