fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define DOSWidth 80
  5. #define DOSHeight 25
  6.  
  7. int iterations = 1024;
  8. float escapeValue = 3.0f;
  9.  
  10. struct ivar {
  11. ivar(float _x, float _i) {
  12. x = _x;
  13. i = _i;
  14. }
  15. void log() {printf("(%g%c%gi)", x, (i<0)?'-':'+', fabs(i));}
  16. float magnitude() {return sqrtf(x*x+i*i);}
  17. ivar square() {return ivar(x, i)*ivar(x, i);}
  18.  
  19. ivar operator + (ivar v) {return ivar(x+v.x, i+v.i);};
  20. ivar operator - (ivar v) {return ivar(x-v.x, i-v.i);};
  21. ivar operator * (ivar v) {return ivar(x*v.x-(i*v.i), x*v.i+i*v.x);};
  22.  
  23. float x, i;
  24. };
  25.  
  26. struct rect {
  27. rect(float _x, float _y, float _width, float _height) {
  28. x = _x;y = _y;width = _width;height = _height;
  29. }
  30.  
  31. void setCenter(float cx, float cy) {
  32. x = cx-width/2.0f;
  33. y = cy-width/2.0f;
  34. }
  35.  
  36. void log() {printf("(%f, %f, %f, %f)", x, y, width, height);}
  37.  
  38. float x, y;
  39. float width, height;
  40. };
  41.  
  42. int main() {
  43. rect region = rect(0, 0, 2.5f, 2.0f);
  44. region.setCenter(0, 0);
  45. float xSize = region.width / (float)DOSWidth;
  46. float ySize = region.height / (float)DOSHeight;
  47. for(int y=0;y<DOSHeight;y++) {
  48. for(int x=0;x<DOSWidth;x++) {
  49. ivar pos0 = ivar(x*xSize+region.x, y*ySize+region.y);
  50. ivar pos = pos0;
  51. bool escapes = false;
  52. for(int i=0;i<iterations;i++) {
  53. if(pos.magnitude() > escapeValue) {
  54. escapes = true;
  55. break;
  56. }
  57. pos = pos.square() + pos0;
  58. }
  59. if(escapes)printf(" ");
  60. else printf("X");
  61. }
  62. printf( "\n" );
  63. }
  64. }
Success #stdin #stdout 0.03s 2680KB
stdin
Standard input is empty
stdout
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                    XX                                          
                                  XXXXX                                         
                                  XXXXX                                         
                       X      XXXXXXXXXXXXX X                                   
                        XXXXXXXXXXXXXXXXXXXXXXX XXX                             
                      XXXXXXXXXXXXXXXXXXXXXXXXXXXX                              
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                             
                   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                            
    XXXXXXXXX    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                          
  XXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                            
 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                             
 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                              
 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                            
   XXXXXXXXXXX   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                           
   X    X         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                           
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                           
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                              
                        XXXXXXXXXXXXXXXXXXXXXXXXXXX                             
                       XX  XXXXXXXXXXXXXXXXXX                                   
                                   XXXX