Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IntList lstX;
- IntList lstY;
- IntList lX;
- IntList lY;
- color c;
- color new_value=#CCEACC;
- color limit_value=#7D4483;
- int seed_X=14;
- int seed_Y=21;
- int maxY=0;
- int minY=32;
- int h;
- int k=0;
- int lenj=0;
- int st=millis();
- int ee=1000;
- int ii=0;
- int l=0;
- public static int jj=0;
- int currStep = 0;
- public static Stack[] y;
- int e=1000;
- void setup()
- {
- size(1400, 700);
- }
- static class Convert
- {
- static int ToPixelX(int x) //get in pixels from 0 to 31
- {
- return 180+x*20+10;
- }
- static int ToPixelY(int y)
- {
- return 20+y*20+10;
- }
- }
- class Pair
- {
- int x;
- int y;
- Pair()
- {
- x=y=0;
- }
- Pair(int xx, int yy)
- {
- x=xx;
- y=yy;
- }
- }
- class Node
- {
- int pair;
- Node prev;
- Node()
- {
- pair=0;
- prev=null;
- }
- Node(int p)
- {
- pair=p;
- }
- }
- class Stack
- {
- Node head;
- Stack()
- {
- head=null;
- }
- public int Pop()
- {
- int temp=head.pair;
- head=head.prev;
- return temp;
- }
- public void Push(int p)
- {
- Node temp=new Node(p);
- Node start=head;
- if (head==null)
- {
- head=temp;
- }
- else if (head.pair>p)
- {
- temp.prev=head;
- head=temp;
- }
- else
- {
- while (start.prev!=null && start.prev.pair<p )
- {
- start=start.prev;
- }
- Node elem=start.prev;
- start.prev=temp;
- temp.prev= elem;
- }
- }
- public int Length()
- {
- int leng=0;
- Node temp=head;
- while(temp!=null)
- {
- leng++;
- temp=temp.prev;
- }
- return leng;
- }
- public int Top()
- {
- return head.pair;
- }
- public boolean IsEmpty()
- {
- if(head==null)
- return true;
- else
- return false;
- }
- }
- public void DrawBackground()
- {
- rect(180, 20, 640, 640);
- for(int i=1;i<=32; i++)
- {
- line(180+20*i, 20, 180+20*i, 660);
- line(180, 20+20*i, 820, 20+20*i);
- }
- for(int i=0;i<32;i++)
- {
- fill(0);
- textSize(15);
- text(i, 180+20*i, 18);
- text(i, 160, 35+20*i);
- noFill();
- }
- }
- public void DrawPixel(int x, int y)
- {
- fill(c);
- rect(180+20*x, 20+20*y, 20, 20);
- noFill();
- }
- public void drawStack(int i, Stack a)
- {
- jj=0;
- int temp1=0;
- int temp2=0;
- int lenj=a.Length()/2;
- while (jj<lenj)
- {
- temp1=a.Pop();
- temp2=a.Pop();
- Paint(temp1,temp2,i+minY);
- jj++;
- }
- if (a.Length()%2!=0)
- {
- Paint(temp2,a.Pop(),i+minY);
- }
- }
- public void drawLine(int beginX, int beginY, int endX, int endY)
- {
- int leng;
- if (abs(endX-beginX)>abs(endY-beginY))
- {
- leng=abs(endX-beginX);
- }
- else
- {
- leng=abs(endY-beginY);
- }
- int check=0;
- double deltaX=((double)endX-beginX)/leng;
- double deltaY=((double)endY-beginY)/leng;
- double x=(beginX+0.5*deltaX);
- double y=(beginY+0.5*deltaY);
- int i=0;
- while (i<leng)
- {
- if (beginY==endY && check==0)
- {
- lX.append((int)beginX);
- lY.append((int)beginY);
- check++;
- }
- else if (check==0)
- {
- lX.append((int)x);
- lY.append((int)y);
- }
- if(y<minY)
- {
- minY=(int)y;
- }
- if(y>maxY)
- {
- maxY=(int)y;
- }
- DrawPixel((int)x,(int)y);
- x=x+deltaX;
- y=y+deltaY;
- i++;
- }
- }
- public void Paint(int beginX, int endX, int endY)
- {
- int beg=beginX;
- int end=endX;
- if(beginX>endX)
- {
- end=beginX;
- beg=endX;
- }
- for (int i=beg; i<=end; i++)
- {
- DrawPixel(i,endY);
- print(" (" + i, endY + ")");
- }
- }
- public void gettt()
- {
- rect(180+20*2-20, 20+20*2-20, 10, 10);
- noFill();
- }
- void draw()
- {
- //background(140);
- lstX=new IntList();
- lstY=new IntList();
- lX=new IntList();
- lY=new IntList();
- //for (int i=0; i<
- DrawBackground();
- drawLine(4,4,4,26);
- drawLine(4,26,20,26);
- drawLine(20,26,28,18);
- drawLine(28,18,21,4);
- drawLine(21,4,21,8);
- drawLine(21,8,10,8);
- drawLine(10,8,10,4);
- drawLine(10,4,4,4);
- drawLine(10,12,10,20);
- drawLine(10,20,17,20);
- drawLine(17,20,21,16);
- drawLine(21,16,21,12);
- drawLine(21,12,10,12);
- Stack[] y=new Stack[maxY-minY+1];
- for (int i=0; i<=maxY-minY; i++)
- {
- y[i]=new Stack();
- }
- for (int i=1; i<lY.size(); i++)
- {
- y[lY.get(i)-minY].Push(lX.get(i));
- }
- if (l==0)
- {
- for (int i=0; i<maxY-minY+1; i++)
- {
- print(i+minY + " ");
- while(!y[i].IsEmpty())
- {
- print(y[i].Pop() + " ");
- }
- }
- l++;
- }
- if (keyPressed==true && ii<maxY-minY)
- {
- drawStack(ii, y[ii]);
- ii++;
- }
- //gettt();
- delay(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement