Advertisement
Guest User

Untitled

a guest
Oct 30th, 2021
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 1.17 KB | None | 0 0
  1. import std.stdio;
  2. import std.conv;
  3. char[] prefix;
  4. void incprefix(){
  5.     char* c=&prefix[$-1];
  6.     char* d=&prefix[0];
  7.    
  8.     loop:
  9.     if(c<d){goto error;}
  10.     if(*c=='9'){
  11.         *c='0'; c--;
  12.         goto loop;
  13.     }
  14.     (*c)=cast(char)((*c)+1);
  15.     return;
  16.    
  17.     error:
  18.         prefix.length+=1;
  19.         prefix[0]='1';
  20.         foreach(ref c_;prefix[1..$]){
  21.             c_='0';
  22.         }
  23. }
  24. int fizzbuzzcase(int i){
  25.     if(i%15==0){return 0;}
  26.     if(i%3==0){return 1;}
  27.     if(i%5==0){return 2;}
  28.     return 3;
  29. }
  30. void printint(int c:3,int i,bool keepzeros:false)(){
  31.     prefix.write;
  32.     enum string s=(i%100).to!string;
  33.     s.writeln;
  34. }
  35. void printint(int c:3,int i,bool keepzeros:true)(){
  36.     prefix.write;
  37.     enum string s=(i%100+100).to!string[1..$];
  38.     s.writeln;
  39. }
  40. void printint(int c,int i,bool b)(){}
  41. void print(int i:0)(){
  42.     "fizzbuzz".writeln;}
  43. void print(int i:1)(){
  44.     "fizz".writeln;}
  45. void print(int i:2)(){
  46.     "buzz".writeln;}
  47. void print(int i:3)(){}
  48. void main(){
  49.     static foreach(i;1..100){ {
  50.         enum c=fizzbuzzcase(i);
  51.         printint!(c,i,false);
  52.         print!c;
  53.     } }
  54.     prefix=['1'];
  55.     loop:
  56.     static foreach(i;100..400+1){ {
  57.         enum c=fizzbuzzcase(i);
  58.         printint!(c,i,true);
  59.         print!c;
  60.         if(i==200 ||i==300){
  61.             incprefix;
  62.         }
  63.     } }
  64.     goto loop;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement