fork download
  1. #define m(a,b)for(j=0;j<4;j++){l[j]=i&a<<j*b;if(__builtin_popcount(l[j])-2)goto l;for(k=0;k<j;k++)if(l[j]==l[k])goto l;}
  2. i,j,k,l[4];f(char*s){for(i=0;i<65536;i++){m(15,4)m(4369,1)for(j=0;j<16;j++)if((!(i&1<<j)==s[j]-49)&&(s[j]!=48))goto l;for(j=0;j<16;j++)putchar(50-!(i&1<<j));l:;}}
  3.  
  4. int main (){
  5. int i;
  6. char *test[] = {
  7. "0020010100000100",
  8. "0010000200121000",
  9. "1000100102000000",
  10. 0
  11. };
  12.  
  13. for (i = 0; test[i]; i++) {
  14. f(test[i]);
  15. puts("");
  16. }
  17. }
  18.  
Success #stdin #stdout 0s 2160KB
stdin
Standard input is empty
stdout
1221212112122112
2211112221121221
1122122122112112