Pi Day MMXIX

w=0;b(){w>27&&puts("",w=0);}
p(c){b();putchar(c),b(++w);}
main(){int/**/N=0,D[][85]={{
0,1048320,4194272,8372472,1,
16646172,33030158,33030150,1
,33030144,16252928,16252928,
3932160,1,1966080,983040,1,1
,229376,57344,14336,7168,1,1
,134219520,1,1,1,1,67109312,
133169264,1,67108860,1,1,1,1
,33554431,-1},{3670016,1,1,1
,3932160,1835008,917504,1,1,
917504,458752,491520,229376,
114688,122880,57344,28672,1,
28672,14336,15360,7168,7680,
3840,1792,1920,960,448,-1},{
0,134217712,134217720,1,1,1,
62914620,31457294,31457286,1
,15728640,7340032,7864320,1,
3932160,1966080,1966080,1,1,
983040,1015808,491520,245760
,245760,122880,61440,61440,1
,30720,15360,-1},{0,0,0,0,0,
0,0,0,0,0,2097088,2097088,0,
0,0,0,0,0,0,0,0,0,-1},{0,0,0
,0,0,1048064,8259552,1,1,1,1
,16515576,15729144,504,504,1
,985024,1048320,1008,504,252
,25166332,29360632,7342064,1
,2097024,0,0,-1},},*d,C[]={1
,119,61,48,59,98,40,41,123,1
,119,62,50,55,38,38,112,117,
116,115,40,34,34,44,119,61,1
,48,41,59,125,112,40,99,41,1
,123,98,40,41,59,112,117,116
,99,104,97,114,40,99,41,44,1
,98,40,43,43,119,41,59,125,1
,109,97,105,110,40,41,123,1,
105,110,116,47,42,42,47,78,1
,61,48,44,68,91,93,91,56,53,
93,61,123,2,125,44,42,100,44
,67,91,93,61,123,3,48,125,44
,42,99,61,67,44,106,59,67,91
,56,48,93,61,40,67,91,56,48,
93,45,52,55,41,37,55,43,52,1
,56,59,105,102,40,78,60,54,1
,41,102,111,114,40,100,61,68
,91,78,63,78,45,49,58,48,93,
59,42,100,43,49,59,42,100,43
,43,45,49,38,38,112,117,116,
115,40,34,34,41,41,105,102,1
,40,42,100,45,49,41,102,111,
114,40,106,61,42,100,59,106,
59,106,47,61,50,41,112,117,1
,116,99,104,97,114,40,51,50,
43,106,37,50,42,49,53,41,59,
59,59,102,111,114,40,59,42,1
,99,59,99,43,43,41,123,105,1
,102,40,42,99,61,61,50,41,1,
102,111,114,40,106,61,48,59,
106,60,53,59,106,43,43,41,1,
123,112,40,49,50,51,41,59,59
,59,102,111,114,40,100,61,68
,91,106,93,59,42,100,43,1,49
,59,112,40,52,52,41,41,1,119
,43,61,112,114,105,110,1,116
,102,40,34,37,100,34,44,1,42
,100,43,43,41,59,112,40,1,52
,53,41,59,112,40,52,57,41,59
,112,40,49,50,53,41,59,1,112
,40,52,52,41,59,125,101,108,
115,101,32,105,102,40,1,42,1
,99,61,61,51,41,102,111,1,1,
114,40,100,61,67,59,42,100,1
,59,112,40,52,52,41,41,119,1
,43,61,112,114,105,110,116,1
,102,40,34,37,100,34,44,42,1
,100,43,43,41,59,1,101,108,1
,115,101,32,105,102,40,42,99
,62,49,41,112,40,42,99,41,59
,125,102,111,114,40,106,61,1
,53,59,45,1,45,106,59,112,40
,53,57,41,1,41,59,1,1,1,125,
0},*c=C,j;C[80]=(C[80]-47)%7
+48;if(N<6)for(d=D[N?N-1:0];
*d+1;*d++-1&&puts(""))if(*d-
1)for(j=*d;j;j/=2)putchar(32
+j%2*15);;;for(;*c;c++){if(*
c==2)for(j=0;j<5;j++){p(123)
;;;for(d=D[j];*d+1;p(44))w+=
printf("%d",*d++);p(45);p(49
);p(125);p(44);}else if(*c==
3)for(d=C;*d;p(44))w+=printf
("%d",*d++);else if(*c>1)p(*
c);}for(j=5;--j;p(59));};;;;

Try it online. Happy pi day.

Winter MMXVIII

                                         I                                         
                                        ,O;                                        
                                       main(                                       
                                      ){char*                                      
                                     Q,_[]={73                                     
                                    ,44,79,59,2                                    
                                   ,109,97,105,2                                   
                                  ,110,40,41,123,                                  
                                 99,104,97,114,42,                                 
                                81,44,95,91,93,61,2                                
                               ,123,1,48,125,44,42,2                               
                              ,74,59,102,111,114,40,2                              
                             ,81,61,95,44,73,61,79,61,                             
                            48,59,42,81,59,43,43,81,41,                            
                           123,105,102,40,42,81,60,50,41                           
                          ,102,111,114,40,74,61,95,59,42,                          
                         74,59,74,43,43,41,73,60,49,38,38,                         
                        112,114,105,110,116,102,40,34,37,42                        
                       ,99,34,44,52,50,45,79,47,50,45,49,44,                       
                      51,50,41,44,73,43,61,112,114,105,110,2,                      
                     116,102,40,34,37,100,34,44,42,74,41,44,73                     
                    ,62,79,63,73,61,48,44,79,43,61,50,44,112,2,                    
                   117,116,115,40,34,34,41,58,48,44,73,43,43,60,                   
                  49,63,112,114,105,110,116,102,40,34,37,42,99,34                  
                 ,44,52,50,45,79,47,50,44,52,52,41,58,112,117,116,                 
                99,104,97,114,40,52,52,41,44,73,62,79,63,73,61,48,2                
               ,44,79,43,61,50,44,112,117,116,115,40,34,34,41,58,48,               
              59,105,102,40,42,81,62,50,41,73,43,43,60,49,63,112,114,              
             105,110,116,102,40,34,37,42,99,34,44,52,50,45,79,47,50,44             
            ,42,81,41,58,112,117,116,99,104,97,114,40,42,81,41,44,73,62            
           ,79,63,73,61,48,44,79,43,61,50,44,112,117,116,115,40,34,34,41           
          ,58,48,59,125,102,111,114,40,73,61,48,59,73,43,43,60,49,55,59,2          
         ,112,117,116,99,104,97,114,40,52,55,41,41,59,102,111,114,40,73,61         
        ,112,117,116,115,40,34,34,41,59,73,43,43,60,53,59,112,117,116,115,2        
       ,40,34,34,41,41,123,112,114,105,110,116,102,40,34,37,42,99,34,44,51,2       
      ,50,44,52,55,41,59,102,111,114,40,74,61,48,59,74,43,43,60,50,48,59,41,2      
     ,2,112,117,2,116,99,2,2,104,2,97,2,114,2,40,52,2,55,41,2,59,125,2,2,125,2     
    ,2,0},*J;for(Q=_,I=O=0;*Q;++Q){if(*Q<2)for(J=_;*J;J++)I<1&&printf("%*c",42-    
   O/2-1,32),I+=printf("%d",*J),I>O?I=0,O+=2,puts(""):0,I++<1?printf("%*c",42-O/   
  2,44):putchar(44),I>O?I=0,O+=2,puts(""):0;if(*Q>2)I++<1?printf("%*c",42-O/2,*Q)  
 :putchar(*Q),I>O?I=0,O+=2,puts(""):0;}for(I=0;I++<17;putchar(47));for(I=puts(""); 
I++<5;puts("")){printf("%*c",32,47);for(J=0;J++<20;)putchar(47);}}/////////////////
                               /////////////////////                               
                               /////////////////////                               
                               /////////////////////                               
                               /////////////////////                               

Try it online.

Cyclic Quine

A classic quine is a program which outputs its own source code.
At first, such a program’s existence seems weird if not impossible, as it has to be so self-referential that it knows about itself everything, including how to know about itself. However, writing quines is possible, if not trivial.

A cyclic quine therefore is a program which outputs source code which differs from its own source code, yet outputs the original source code when run (the cycle length could be greater than one). So when running source codes \Psi and \Phi, they output source codes \Phi and \Psi.

Therefore, when one saves the first program as q0.py and the second as q1.py, one can create both source codes from one another (the following bash commands will not change the files’ contents).

$ python q0.py > q1.py
$ python q1.py > q0.py
$ python q0.py | python > q0.py
$ python q0.py | python | python | python | python > q1.py

j=0;Q,q="j=1;Q,q={}{}{}.replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)".replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)
j=1;Q,q="j=1;Q,q={}{}{}.replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)".replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)