Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (use srfi-1 numbers)
- (define (fizzbuzz n)
- (cond ((= (remainder n 15) 0) "FizzBuzz\\n")
- ((= (remainder n 5) 0) "Buzz\\n")
- ((= (remainder n 3) 0) "Fizz\\n")
- (else "%d\\n")))
- (with-output-to-file
- "fizzbuzz.c"
- (lambda ()
- (display "
- #include <stdio.h>
- #include <string.h>
- char * precomp[] = {
- ")
- (for-each (lambda (e) (printf "\"~A\", " (fizzbuzz e))) (iota 15))
- (display "NULL };")
- (display "
- int main(int argc, char ** argv) {
- if(argc != 2)
- return -1;
- unsigned long long m;
- sscanf(argv[1], \"%llu\", &m);
- unsigned long long mp = m - 15;
- unsigned long long x = 0;
- while(x < mp) {
- unsigned long long tmp = x;
- ")
- (for-each (lambda (e) (printf "printf(precomp[~A],tmp++);\n" e)) (iota 15))
- (display "
- x+=15;
- }
- int i = 0;
- while(x < m) {
- printf(precomp[i],x);
- ++i; ++x;
- }
- }
- ")))
- (system "gcc -o fizzbuzz fizzbuzz.c -O3 -march=native -std=c11")
- (system (sprintf "./fizzbuzz ~A" (- (expt 2 64) 1)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement