1
Name:
Anonymous
2018-04-15 1:54
Write a fizzbuzz program in a language you've never used before.It's not hard, but I assume that if you come up with difficult challenges, people won't do them.
20
Name:
Anonymous
2018-04-17 6:56
A custom console FizzBuzz in C11 you have to run it with ./a.out 1 101 3:Fizz 5:Buzz#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #include <stdbool.h> typedef struct fb_denom_str{uint64_t denom;char str[256];}fb_denom_str; bool test_denom(uint64_t val,uint64_t denom){ if(0==val%denom){ return true;}else{ return false; } } bool test_and_print(fb_denom_str tested,uint64_t val){ if(test_denom(val,tested.denom)){ printf("%s",tested.str); return true;} return false; } bool test_multiple(uint64_t val,size_t num_denoms,fb_denom_str denoms[]){uint64_t hits=0; bool result=false; for(size_t i=0;i<num_denoms;i++){ result=test_and_print(denoms[i],val); if(result)hits+=1; } if(0==hits){printf("%lu\n",val);}else{printf("\n");}//print the value } int fizzbuzz(size_t numstructs,uint64_t minval,uint64_t maxvalue,fb_denom_str denoms[]){ for(uint64_t i=minval;i<maxvalue;i++){ test_multiple(i,numstructs,denoms); } return EXIT_SUCCESS; } int main(int argc, char ** argv){ uint64_t minval,maxval; fb_denom_str* denoms=malloc(sizeof(fb_denom_str)*(argc-3)); switch(argc){ case 0:return EXIT_FAILURE; case 1:case 2: case 3:puts("Syntax: fizzbuzz minval maxval num:str ...");return EXIT_FAILURE; default: minval=strtoull(argv[1],NULL,10); maxval=strtoull(argv[2],NULL,10); size_t denom_start=0; for(size_t i=3;i<argc;i++){ denoms[denom_start].denom=strtoull(argv[i],NULL,10); size_t numlen=strspn(argv[i],"0123456789");//find the size of number in num:str char* str_start=&argv[i][numlen]; size_t str_len=strlen(str_start); if(str_len>255)str_len=255;//max length of argument str strncpy((char* restrict)&denoms[denom_start].str,str_start+1,str_len); denom_start++; }} return fizzbuzz(argc-3,minval,maxval,denoms); }