fork(3) download
  1. //C, 399 bytes
  2. //BrainSteel
  3.  
  4. char*T=" |-+ | +-| ",*B;w;f(N,x,y,m,n,F,h,k,i,j){w=B?F=0,w:1<<N|1;char b[N?w*w:6];for(k=w;k--;)b[k*w-1]=10;B=!B?F=1,m=0,n=0,x--,y--,b:B;if(N>1){h=1<<N-1;i=x>--h,j=y>h;while(++k<4)if(k%2-i||k/2-j)f(N-1,!(k%2)*h,!(k/2)*h,m+k%2*(h+1),n+k/2*(h+1));f(1,h&i,h&j,m+h,n+h);h++;f(N-1,x-h*i,y-h*j,m+h*i,n+h*j);}else while(++k<4)B[w*(n+k/2)+m+k%2]=T[5*x+2*y+k];if(F)B[y*w+x]=79,B[w*w-w-1]=0,puts(N?B:"O"),B=0;}
  5.  
  6.  
  7. //Test program:
  8. #include "stdio.h"
  9. #include "string.h"
  10.  
  11. int main(){
  12. int N, X, Y, Q = 0;
  13. char buf[100];
  14.  
  15. while (!Q) {
  16. //Input -1 X Y to quit
  17. scanf(" %d %d %d", &N, &X, &Y);
  18. if (N < 0) {
  19. Q = 1;
  20. }
  21. else {
  22. printf("%d %d %d\n\n", N, X, Y);
  23. f(N, X, Y);
  24. printf("\n--------------------------------\n\n");
  25. }
  26. }
  27. return 0;
  28. }
  29.  
  30.  
Success #stdin #stdout 0s 2056KB
stdin
0 0 0

1 1 1

2 4 4

3 2 7

4 8 8

5 23 17

0 0 0

-1 0 0
stdout
0 0 0

O

--------------------------------

1 1 1

O|
-+

--------------------------------

2 4 4

+--+
|+-|
||+-
+-|O

--------------------------------

3 2 7

+--++--+
|+-||-+|
||+--+||
+-|-+|-+
+--+||-+
|-+|-+||
|O|||-+|
+--++--+

--------------------------------

4 8 8

+--++--++--++--+
|+-||-+||+-||-+|
||+--+||||+--+||
+-|+-|-++-|-+|-+
+-||+--++--+||-+
||+-|+-||-+|-+||
|+-|||+--+|||-+|
+--++-|O||-++--+
+--++-|-+|-++--+
|+-|||+--+|||-+|
||+-|+-||-+|-+||
+-||+--++--+||-+
+-|+-|-++-|-+|-+
||+--+||||+--+||
|+-||-+||+-||-+|
+--++--++--++--+

--------------------------------

5 23 17

+--++--++--++--++--++--++--++--+
|+-||-+||+-||-+||+-||-+||+-||-+|
||+--+||||+--+||||+--+||||+--+||
+-|+-|-++-|-+|-++-|+-|-++-|-+|-+
+-||+--++--+||-++-||+--++--+||-+
||+-|+-||-+|-+||||+-|+-||-+|-+||
|+-|||+--+|||-+||+-|||+--+|||-+|
+--++-|+-|-++--++--++-|-+|-++--+
+--++-||+--++--++--++--+||-++--+
|+-|||+-|+-||-+||+-||-+|-+|||-+|
||+-|+-|||+--+||||+--+|||-+|-+||
+-||+--++-|+-|-++-|-+|-++--+||-+
+-|+-|-++-||+--++--+||-++-|-+|-+
||+--+||||+-|+-||-+|-+||||+--+||
|+-||-+||+-|||+--+|||-+||+-||-+|
+--++--++--++-|+-|-++--++--++--+
+--++--++--++-||+--++-O|+--++--+
|+-||-+||+-|||+-|+-|||-+|+-||-+|
||+--+||||+-|+-|||+-|+-|||+--+||
+-|+-|-++-||+--++-||+--++-|-+|-+
+-||+--++-|+-|-++-|+-|-++--+||-+
||+-|+-|||+--+||||+--+|||-+|-+||
|+-|||+-|+-||-+||+-||-+|-+|||-+|
+--++-||+--++--++--++--+||-++--+
+--++-|+-|-++--++--++-|-+|-++--+
|+-|||+--+|||-+||+-|||+--+|||-+|
||+-|+-||-+|-+||||+-|+-||-+|-+||
+-||+--++--+||-++-||+--++--+||-+
+-|+-|-++-|-+|-++-|+-|-++-|-+|-+
||+--+||||+--+||||+--+||||+--+||
|+-||-+||+-||-+||+-||-+||+-||-+|
+--++--++--++--++--++--++--++--+

--------------------------------

0 0 0

O

--------------------------------