Skip to content

Instantly share code, notes, and snippets.

@ben0x539
Last active February 12, 2021 10:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ben0x539/4d8058a9beee7541991b9d2250f49b69 to your computer and use it in GitHub Desktop.
Save ben0x539/4d8058a9beee7541991b9d2250f49b69 to your computer and use it in GitHub Desktop.
#define NUMBER *p-- = buf; itoa(i, buf); while (*buf++); --i;
#define FIZZ *p-- = "Fizz"; --i;
#define BUZZ *p-- = "Buzz"; --i;
#define FIZZBUZZ *p-- = "FizzBuzz"; --i;
void itoa(int value, char* s) {
int l;
if (value > 9999) l = 5;
else if (value > 999) l = 4;
else if (value > 99) l = 3;
else if (value > 9) l = 2;
else l = 1;
s[l] = '\0';
while (l > 0) {
s[--l] = (value % 10) + '0';
value /= 10;
}
}
char mem[1024*128];
char ** fizzBuzz(int n, int* returnSize){
char* buf = mem;
char** v = (void*) buf;
buf += sizeof(char*)*n;
*returnSize = n;
int i = n;
while (i > 0) {
char** p = &v[i-1];
switch (i%15) {
case 14: NUMBER
case 13: NUMBER
case 12: FIZZ
case 11: NUMBER
case 10: BUZZ
case 9: FIZZ
case 8: NUMBER
case 7: NUMBER
case 6: FIZZ
case 5: BUZZ
case 4: NUMBER
case 3: FIZZ
case 2: NUMBER
case 1: NUMBER
case 0:
if (i == 0) break;
FIZZBUZZ
}
}
return v;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment