Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

fizzbuzz

Name: Anonymous 2012-03-13 7:15

#include <stdio.h>
int main(void) {
    int i = 0;
    char *s[] = {"%d\n", "fizz\n", "buzz\n", "fizzbuzz\n"};
    while (i++ < 100)
        printf(s[(!(i%3))|((!(i%5))<<1)], i);
    return 0;
}


http://codepad.org/nkFXJqlG

Name: Anonymous 2012-03-13 13:16

Time for some benchmarks.

- GCC 4.6.3 -march=native -mtune=native -O3
- glibc 2.15
- Linux 3.2.9 SMP PREEMPT
- i5 2500K clocked at 3.30GHz
- stdout is /dev/null
- 50000000 iterations
- Programs are run two times and the best result is used.

>>1's fizzbuzz:
real    0m3.034s
user    0m3.023s
sys    0m0.007s


My fizzbuzz:
real    0m1.696s
user    0m1.677s
sys    0m0.017s


#include <stdio.h>

void fizzbuzz(unsigned int n)
{
  char *s[] = {"%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n"};
  unsigned int coarse = n >> 4;
  unsigned int i = 1;

  for (; coarse; coarse--) {
    printf("%d\n"
           "%d\n"
           "Fizz\n"
           "%d\n"
           "Buzz\n"
           "Fizz\n"
           "%d\n"
           "%d\n"
           "Fizz\n"
           "Buzz\n"
           "%d\n"
           "Fizz\n"
           "%d\n"
           "%d\n"
           "FizzBuzz\n",
           i, i + 1, i + 3, i + 6, i + 7, i + 10, i + 12, i + 13);
    i += 15;
  }

  i--;
  while (i++ < n)
    printf(s[(!(i%3))|((!(i%5))<<1)], i);
}

int main() {
  fizzbuzz(100);

  return 0;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List