fork(3) download
  1. #include <stdio.h>
  2.  
  3. #define DISKS 4 // 10 max
  4. int stacks[3][DISKS];
  5. int sps[3];
  6.  
  7. void init(int from)
  8. {
  9. int i;
  10. sps[2] = sps[1] = sps[0] = 0;
  11. for (i = 0; i < DISKS; i++)
  12. stacks[from][i] = DISKS - i; // disk radius
  13. sps[from] = DISKS;
  14. }
  15.  
  16. void print(void)
  17. {
  18. int i, j, k;
  19. for (i = DISKS - 1; i >= 0; i--)
  20. {
  21. for (j = 0; j < 3; j++)
  22. {
  23. if (sps[j] > i)
  24. {
  25. for (k = 0; k < 10 - stacks[j][i]; k++)
  26. printf(" ");
  27. for (k = 0; k < 2 * stacks[j][i]; k++)
  28. printf("x");
  29. for (k = 0; k < 10 - stacks[j][i]; k++)
  30. printf(" ");
  31. }
  32. else
  33. {
  34. printf(" "); // 10 * 2
  35. }
  36. printf(" ");
  37. }
  38. printf("\n");
  39. }
  40. printf("_________/\\_________ _________/\\_________ _________/\\_________\n\n");
  41. }
  42.  
  43. void solve(int to, int from, int cnt)
  44. {
  45. int other = from ^ to ^ 3;
  46.  
  47. if (!cnt) return;
  48.  
  49. solve(other, from, cnt - 1);
  50.  
  51. stacks[to][sps[to]++] = stacks[from][--sps[from]];
  52. print();
  53.  
  54. solve(to, other, cnt - 1);
  55. }
  56.  
  57. int main(void)
  58. {
  59. init(0);
  60. print();
  61. solve(2, 0, DISKS);
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
         xx                                                       
        xxxx                                                      
       xxxxxx                                                     
      xxxxxxxx                                                    
_________/\_________  _________/\_________  _________/\_________

                                                                  
        xxxx                                                      
       xxxxxx                                                     
      xxxxxxxx                 xx                                 
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
       xxxxxx                                                     
      xxxxxxxx                 xx                   xxxx          
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
       xxxxxx                                        xx           
      xxxxxxxx                                      xxxx          
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
                                                     xx           
      xxxxxxxx               xxxxxx                 xxxx          
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
         xx                                                       
      xxxxxxxx               xxxxxx                 xxxx          
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
         xx                   xxxx                                
      xxxxxxxx               xxxxxx                               
_________/\_________  _________/\_________  _________/\_________

                                                                  
                               xx                                 
                              xxxx                                
      xxxxxxxx               xxxxxx                               
_________/\_________  _________/\_________  _________/\_________

                                                                  
                               xx                                 
                              xxxx                                
                             xxxxxx               xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
                              xxxx                   xx           
                             xxxxxx               xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
                                                     xx           
        xxxx                 xxxxxx               xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
         xx                                                       
        xxxx                 xxxxxx               xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
         xx                                        xxxxxx         
        xxxx                                      xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                                  
                                                   xxxxxx         
        xxxx                   xx                 xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                                  
                                                    xxxx          
                                                   xxxxxx         
                               xx                 xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________

                                                     xx           
                                                    xxxx          
                                                   xxxxxx         
                                                  xxxxxxxx        
_________/\_________  _________/\_________  _________/\_________