#include #include #include #include #include #define UP 25 #define DOWN 17 #define LEFT 3 #define RIGHT 7 #define UNIT 40000 void go(); void drawbox(); void drawone(); void drawtwo(); void drawthree(); void drawfour(); void drawfive(); void drawsix(); void drawseven(); void draweight(); void drawnine(); void eol(); int main(){ if (ioperm(0x378,1,1)) return -1; int i=0,x=0; while(i++<81){ scanf("%i",&x); switch (x){ case 1:drawone();break; case 2:drawtwo();break; case 3:drawthree();break; case 4:drawfour();break; case 5:drawfive();break; case 6:drawsix();break; case 7:drawseven();break; case 8:draweight();break; case 9:drawnine();break; } if(i%9==0) eol(); } } void go(int dir,int time){ outb(dir,0x378); usleep(UNIT*time); outb(0,0x378); usleep(UNIT); } void drawbox(){ go(RIGHT,10); //start in top left go(DOWN,10); go(LEFT,10); go(UP,10); //box drawn } void drawone(){ drawbox(); go(RIGHT,5); go(DOWN,2); go(DOWN|LEFT,2); go(UP|RIGHT,2); go(DOWN,6); go(LEFT,2); go(RIGHT,4); go(DOWN,2); go(RIGHT,2); go(UP,10); //end in top right } void drawtwo(){ drawbox(); go(RIGHT,2); go(DOWN,4); go(UP|RIGHT,2); go(DOWN|RIGHT,2); go(DOWN,2); go(DOWN|LEFT,2); go(RIGHT,4); go(DOWN,2); go(RIGHT,2); go(UP,10); } void drawthree(){ drawbox(); go(RIGHT,2); go(DOWN,2); go(RIGHT,6); go(DOWN,3); go(LEFT,4); go(RIGHT,4); go(DOWN,3); go(LEFT,6); go(RIGHT,6); go(DOWN|RIGHT,2); go(UP,10); } void drawfour(){ drawbox(); go(RIGHT,5); go(DOWN,2); go(DOWN|LEFT,4); go(RIGHT,6); go(LEFT,2); go(UP,4); go(DOWN,8); go(RIGHT,5); go(UP,10); } void drawfive(){ drawbox(); go(RIGHT|DOWN,2); go(RIGHT,6); go(LEFT,6); go(DOWN,2); go(RIGHT,2); go(DOWN|RIGHT,2); go(DOWN|LEFT,2); go(LEFT,2); go(DOWN,2); go(RIGHT,8); go(UP,10); } void drawsix(){ drawbox(); go(RIGHT,5); go(DOWN,2); go(RIGHT|DOWN,2); go(UP|LEFT,2); go(LEFT|DOWN,2); } void drawseven(){ drawbox(); go(RIGHT,2); go(DOWN,5); go(RIGHT,6); go(DOWN|RIGHT,6); go(DOWN,2); go(RIGHT,8); go(UP,10); } void draweight(){ drawbox(); go(RIGHT,2); go(DOWN,2); go(RIGHT,6); go(DOWN,3); go(LEFT,6); go(UP,3); go(DOWN,6); go(RIGHT,6); go(UP,3); go(DOWN,5); go(RIGHT,2); go(UP,10); } void drawnine(){ drawbox(); go(RIGHT,2); go(DOWN,2); go(RIGHT,3); go(LEFT,3); go(DOWN,3); go(RIGHT,3); go(UP,3); go(DOWN,8); go(RIGHT,2); go(UP,10); } void eol(){ go(DOWN,10); go(LEFT,90); }