Skip to content

Instantly share code, notes, and snippets.

@macrat
Last active April 22, 2016 10:03
Show Gist options
  • Save macrat/094c488e486b47aa56a8973a3e365ec9 to your computer and use it in GitHub Desktop.
Save macrat/094c488e486b47aa56a8973a3e365ec9 to your computer and use it in GitHub Desktop.
不適切なFizzBuzz
#define func(name, expression, ...) int name(__VA_ARGS__){ return expression; }
int PutC(char c){ char*t=&c; asm("mov $1,%%rax\nmov $1,%%rdi\nmov %0,%%rsi\nmov $1,%%rdx\nsyscall" :: "m"(t)); return 0; }
func(PutS, *string && PutC(*string) & PutS(string + 1), char* string);
func(EndL, PutC(0x0a));
func(Fizz, PutS((char*)__func__));
func(Buzz, PutS((char*)__func__));
func(LenAsStr, n/10 > 0 && LenAsStr(n/10) + 1, int n);
func(PutI, (LenAsStr(n) && PutI(n/10)) & PutC(n%10 + 0x30), int n);
func(main, i < 0 && ((i%3>>31 || Fizz()) & (i%5>>31 || Buzz()) && PutI(-i)) & EndL() || i > -20 && main(i * (i<0) - 1, _), int i, char** _);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment