daily pastebin goal
5%
SHARE
TWEET

Untitled

a guest Dec 10th, 2018 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  IntList lstX;
  2. IntList lstY;
  3.  
  4. IntList lX;
  5. IntList lY;
  6.  
  7. color c;
  8. color new_value=#CCEACC;
  9. color limit_value=#7D4483;
  10.  
  11. int seed_X=14;
  12. int seed_Y=21;
  13. int maxY=0;
  14. int minY=32;
  15.  
  16. int h;
  17. int k=0;
  18. int lenj=0;
  19. int st=millis();
  20. int ee=1000;
  21. int ii=0;
  22. int l=0;
  23. public static int jj=0;
  24.  
  25. int currStep = 0;
  26. public static Stack[] y;
  27. int e=1000;
  28.  
  29. void setup()
  30. {
  31.   size(1400, 700);
  32. }
  33.  
  34. static class Convert
  35. {
  36.   static int ToPixelX(int x) //get in pixels from 0 to 31
  37.   {
  38.     return 180+x*20+10;
  39.   }
  40.   static int ToPixelY(int y)
  41.   {
  42.     return 20+y*20+10;
  43.   }
  44. }
  45.  
  46.  
  47. class Pair
  48. {
  49.   int x;
  50.   int y;
  51.   Pair()
  52.   {
  53.     x=y=0;
  54.   }
  55.   Pair(int xx, int yy)
  56.   {
  57.     x=xx;
  58.     y=yy;
  59.   }
  60. }
  61.  
  62. class Node
  63. {
  64.   int pair;
  65.   Node prev;
  66.   Node()
  67.   {
  68.     pair=0;
  69.     prev=null;
  70.   }
  71.  
  72.   Node(int p)
  73.   {
  74.     pair=p;
  75.   }
  76. }
  77.  
  78. class Stack
  79. {
  80.   Node head;
  81.  
  82.   Stack()
  83.   {
  84.     head=null;
  85.   }
  86.  
  87.   public int Pop()
  88.   {
  89.     int temp=head.pair;
  90.    
  91.     head=head.prev;
  92.    
  93.     return temp;
  94.   }
  95.  
  96.   public void Push(int p)
  97.   {
  98.     Node temp=new Node(p);
  99.     Node start=head;
  100.     if (head==null)
  101.     {
  102.        head=temp;
  103.     }
  104.     else if (head.pair>p)
  105.     {
  106.       temp.prev=head;
  107.       head=temp;
  108.     }
  109.     else
  110.     {
  111.     while (start.prev!=null && start.prev.pair<p )
  112.     {
  113.       start=start.prev;
  114.     }
  115.       Node elem=start.prev;
  116.       start.prev=temp;
  117.       temp.prev= elem;
  118.     }
  119.   }
  120.  
  121.   public int Length()
  122.   {
  123.     int leng=0;
  124.     Node temp=head;
  125.     while(temp!=null)
  126.     {
  127.       leng++;
  128.       temp=temp.prev;
  129.     }
  130.     return leng;
  131.   }
  132.  
  133.   public int Top()
  134.   {
  135.     return head.pair;
  136.   }
  137.  
  138.   public boolean IsEmpty()
  139.   {
  140.     if(head==null)
  141.     return true;
  142.     else
  143.     return false;
  144.   }
  145. }
  146.  
  147.   public void DrawBackground()
  148.   {
  149.     rect(180, 20, 640, 640);
  150.     for(int i=1;i<=32; i++)
  151.     {
  152.       line(180+20*i, 20, 180+20*i, 660);
  153.       line(180, 20+20*i, 820, 20+20*i);
  154.     }
  155.    
  156.     for(int i=0;i<32;i++)
  157.     {
  158.       fill(0);
  159.       textSize(15);
  160.       text(i, 180+20*i, 18);
  161.       text(i, 160, 35+20*i);
  162.       noFill();
  163.     }
  164.   }
  165.  
  166.   public void DrawPixel(int x, int y)
  167.   {
  168.     fill(c);
  169.     rect(180+20*x, 20+20*y, 20, 20);
  170.     noFill();
  171.   }
  172.  
  173.   public void drawStack(int i, Stack a)
  174.   {
  175.       jj=0;
  176.       int temp1=0;
  177.       int temp2=0;
  178.       int lenj=a.Length()/2;
  179.       while (jj<lenj)
  180.       {
  181.           temp1=a.Pop();
  182.           temp2=a.Pop();
  183.  
  184.           Paint(temp1,temp2,i+minY);
  185.           jj++;
  186.       }
  187.  
  188.       if (a.Length()%2!=0)
  189.       {
  190.         Paint(temp2,a.Pop(),i+minY);
  191.       }
  192.   }
  193.  
  194.   public void drawLine(int beginX, int beginY, int endX, int endY)
  195.   {
  196.     int leng;
  197.     if (abs(endX-beginX)>abs(endY-beginY))
  198.     {
  199.       leng=abs(endX-beginX);
  200.     }
  201.     else
  202.     {
  203.       leng=abs(endY-beginY);
  204.     }
  205.     int check=0;
  206.     double deltaX=((double)endX-beginX)/leng;
  207.     double deltaY=((double)endY-beginY)/leng;
  208.     double x=(beginX+0.5*deltaX);
  209.     double y=(beginY+0.5*deltaY);
  210.     int i=0;
  211.     while (i<leng)
  212.     {
  213.       if (beginY==endY && check==0)
  214.       {
  215.         lX.append((int)beginX);
  216.         lY.append((int)beginY);  
  217.         check++;
  218.       }
  219.       else if (check==0)
  220.        {
  221.          lX.append((int)x);
  222.         lY.append((int)y);  
  223.        }
  224.       if(y<minY)
  225.       {
  226.         minY=(int)y;
  227.       }
  228.       if(y>maxY)
  229.       {
  230.         maxY=(int)y;
  231.       }
  232.       DrawPixel((int)x,(int)y);
  233.       x=x+deltaX;
  234.       y=y+deltaY;
  235.       i++;
  236.     }  
  237.    
  238.   }
  239.  
  240.   public void Paint(int beginX, int endX, int endY)
  241.   {
  242.     int beg=beginX;                        
  243.     int end=endX;
  244.     if(beginX>endX)
  245.     {
  246.       end=beginX;
  247.       beg=endX;
  248.     }
  249.     for (int i=beg; i<=end; i++)
  250.     {
  251.       DrawPixel(i,endY);
  252.       print(" (" + i, endY + ")");
  253.     }
  254.   }
  255.  
  256.   public void gettt()
  257.   {
  258.     rect(180+20*2-20, 20+20*2-20, 10, 10);
  259.     noFill();
  260.   }
  261.  
  262.  
  263.   void draw()
  264.   {
  265.     //background(140);
  266.     lstX=new IntList();
  267.     lstY=new IntList();
  268.  
  269.     lX=new IntList();
  270.     lY=new IntList();
  271.     //for (int i=0; i<
  272.        
  273.     DrawBackground();
  274.     drawLine(4,4,4,26);
  275.     drawLine(4,26,20,26);
  276.     drawLine(20,26,28,18);
  277.     drawLine(28,18,21,4);
  278.     drawLine(21,4,21,8);
  279.     drawLine(21,8,10,8);
  280.     drawLine(10,8,10,4);
  281.     drawLine(10,4,4,4);
  282.    
  283.     drawLine(10,12,10,20);
  284.     drawLine(10,20,17,20);
  285.     drawLine(17,20,21,16);
  286.     drawLine(21,16,21,12);
  287.     drawLine(21,12,10,12);
  288.    
  289.     Stack[] y=new Stack[maxY-minY+1];
  290.     for (int i=0; i<=maxY-minY; i++)
  291.     {
  292.       y[i]=new Stack();
  293.     }
  294.        
  295.     for (int i=1; i<lY.size(); i++)
  296.     {
  297.       y[lY.get(i)-minY].Push(lX.get(i));
  298.     }
  299.      if (l==0)
  300.      {
  301.     for (int i=0; i<maxY-minY+1; i++)
  302.     {
  303.       print(i+minY + " ");
  304.       while(!y[i].IsEmpty())
  305.       {
  306.         print(y[i].Pop() + " ");
  307.       }
  308.     }
  309.     l++;
  310.      }
  311.    
  312.     if (keyPressed==true && ii<maxY-minY)
  313.     {
  314.       drawStack(ii, y[ii]);
  315.       ii++;
  316.     }
  317.     //gettt();
  318.     delay(100);
  319. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top