NATSUMI.C

오늘은 NATSUMI.C를 해보려 합니다.
좌측의 그림인데요.
코드를 컴파일 해서 실행시켜보니 역시 아무런 반응이 없습니다.
그래서 일일이 코드를 풀어서 보기로 했습니다. -_-;


char*_=__FILE__"_`";
#include    <stdio.h>
typedef int N;
struct{N y,a,u,_,n;}__   ,o[1<<16];
N E,K,O[1<<16],z=46340,n,a,t,s,u,m,i;
typedef void D;
D p(N r){
	putchar(r);
}
D q(N c,char*r){
	printf(r,    c);
}
D Y(N r){
	if(o[t].a>o[n].a+o[u].a){
		o[t].y=r;o[t].a=o[o[t].u=n].a+o[o[t].n=u].a;
		o[o[t]._<z?t:(O[E++]=t)]._=m;
	};
}
D Q(N c);
D P(N c,N r){;
	c=(o[c].y&r)?(Q(c),0):(p(40),Q(c), p(41),0);
}
D Q(N c){c=(o[c].y-1)?(o[c].y&6)?P(o[c].u,3),(o[c].y-2?(p(47),(o[c].n-s?(p(40),Q(o[c].n),p(41),0):(Q(s),0))):(p(42),P( o[c].n,7),0)):(Q(o[c].u),(o[c].y-8?(p(45),P(o[c].n,7 ), 0) : (p( 43),Q(o[c].n),0))):(q(s,"%d"),0);}
D d(N c){
	if(c>  (z-  1)* (z  -1 ))
	{
		q(s,"%d*(");
		d(c/s);

		p(41);

			if(c%s){
				{;}
				p(+43 -0);
				p(40);
				Q(c%s);
				p(41);
			}
	}
	else
	{
		if(c<z)
		{
			Q(c);
		}
		else
		{
			n=c;
			u=0;
			for(i=2;   i<=(a=c/i);i++)
			{
				if(a<z){
					if(n >(m=o[i].a+o[a].a+o[c%i].a))
					{
						n=m;
						u=i;
					}
				}
			}
			P(u,3);
			p(42);
			P(c/u,7);
			
			if(c%u)
			{
				p(43);
				Q(c%u);
			}
		}
	}
}

N main(int c,char **r)
{
	if(c>1)
	{
		for(t=i=0;*_;t +=(N)*(_++)   );
		++s;++K;
		
		for(s=03+(t%+247);i<z;i++)
			o[i].a=o[i]._=z;
			o[o[0].a=o[s].u=o[s].n=o[s]._=m=0].y=16;
			for(o[0]._=o[s].a=E=K=o[o[0].u =o[0].n=O[0]=s].y=1; E<z-1;K=E)
			{
				for(++m,i= 0 ;i<K;)
				{
					a=0;
					for(n=O[i++];a<K;)
					{
						if((t=n*(u=O[a++]))<z)Y(2);
						if(!(n%u))
						{
							t=n/u;
							Y(4);
						}
						
						if( (t=n+u)<z)
							Y (8);
						
						if((t=n-u)>1)
							Y(16);
					}
				}
			}
			K=1;
			for(;K++<c;  p ((m <0)?(p (45),p(40),d(-m),p(41),10):(d(m),10)) ) 
			{;
			sscanf (*(++r),"%d",&m);
			q(m,"%d\40=" " ");
			}
	};
	{;}
	return+0;
}

이런 젠장...이라고 말이나오는군요.
뭘 이리도 보기가 힘든건지...

...

제 시스템에서 한~참을 돌렸습니다.
정말 오래돌아가야하더군요.
VS.net에서 브포 걸어서 한 라인씩 이동했었는데
계~속 한곳에서 루프돌길래 무한루프에 걸렸는줄 알았습니다.
아무래도 이상하다 싶어서 그냥 놔뒀더니
아래와 같은 결과를 출력하더군요. -_-;

c:> natsumi hello
결과 : 6 = (152+152+152)/(152*152/(152+152))

c:> natsumi helloworld
결과 : 6 = (152+152+152)/(152*152/(152+152))


둘 다 같은 결과인데 왜 저렇게 나오는지는 모르겠네요. -_-;
더이상은 무리인것 같습니다.
char*_에서부터 질려버렸는데 -_-;

아래는 NATSUMI.C의 정렬하기 전 소스입니다.
         char
        /******____
       */*_=__FILE__"_`";
      #/*        ,c2005__***/include    <stdio.h>
     /**        ,*/typedef/**/int N;struct{N y,a,u,_,n;}__   ,o[1<<
     16]       ;N E,K,O[1<<16],z=46340,n,a,t,s,u,m,i;typedef void D/*.
     **/   ;D p(N r){putchar(r);}D q(N c,char*r){printf(r,    c);}D Y(N
     r){if   (o[t].a>o[n].a+o[u].a){o[t].y=r;o[t].a=o[o[t].       u=n].a
    /****   */+o[o[t].n=u].a;o[o[t]._<z?t:(O[E++]=t)]._=m;}           ;}D
 Q(   /**/N c);D P(N c,N r){;c=(o[c].y&r)?(Q(c),0):(p(40),Q(            c),
p(     /***/41),0);}D Q(N c){c=(o[c].y-1)?(o[c].y&6)?P(o[c].               u,
 3)   ,(/****/o[c].y-2?(p(47),(o[c].n-s?(p(40),Q(o[c].n),p(41                ),
   0):(Q(s)/***/,0))):(p(42),P( o[c].n,7),0)):(Q(o[c].u),(o[c                ].y
    -8?(p(45),/**/P(o[c].n,7 ), 0) : (p( 43),Q(o[c].n),0))):(q            (s,
   "%d"),0);}D d(N c){if(c>  (z-  1)* (z  -1 ))  {q(s,"%d*(");       d(c/s
  );p(41);if(c%s){{;}p(  +43 -0);  p/*  `     +\  */(40);Q(c%s     );p(41
  );}}else{if(c<z){Q(c  );}else/*    `+_`*/{n=c;u  =0;for(i=2;   i<=(a=c/
  i);i++){if(a<z){if(n >(m=o[i  ]      .  a+o[a].  a+o[c%i].a)) {  n  =m;
   u=i;}}}P(u,3);p(42)   ;P(c/            u,7);if  (c%u){p(43);Q    (c  %u
    );}}}}N main(int c   ,char            **r){if   (c>1){for(t       =i  =0
      ;*_;t +=(N)*(_++)   );++              s;++    K;for(s=03+         (   t
       %+  247);i<z;i++                             )o[i].a=o[i]         ._   =
      z    ;o[o[0].a=o[s]                          .u=o[s].n=o[s]          .   _=
    m=     0].y=16;for(o[0        ]._=            o[s].a=E=K=o[o[           0    ]
   .      u =o[0].n=O[0]=s].y                  =1; E<z-1;K=E){for(           ++    m
  ,     i= 0 ;i<K;){a=0;for(n=O[i          ++];    a<K;){if((t=n*(            u=  O[
  a    ++ ]   ))<z)Y(2);if(!(n%  u)){t=n/u;       Y(4);}if( (t=n+u)            <z
  )    Y (    8);if((t=n-u)>1)Y(                16);}}}K=1  ;for(;K         ++<c
   ;  p ((     m <0)?(p (45),p(40             ),d(-m),p(     41),10)   :(d(m),10)
   ) ) {;         sscanf (*(++r) ,          /*'   */         "%d",&m);q(m,"%d\40="
    " "           );    } };   {;}                             return+0;}
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2005/10/12 16:49 2005/10/12 16:49
Response
2 Trackbacks , 2 Comments
RSS :
http://shiftkey.org/rss/response/30

L


이 파일을 컴파일 후 실행하니

<file> [width] [...]
Press any key to continue

이러한 결과가 나오네요. ㅡ.,ㅡ;
무지무지 궁금하게 하네요.
file과 width라...
분명 옵션에 어떠한 파일과 그 파일에 대한 width라는걸 넣어야하는것 같은데...
이미지파일을 넣는걸까요? 진실은 저 뒷편에...


우선 d:\에 test.txt라는 파일을 만들고 Hello World!라고 치고 저장했습니다.

D:\Visual Studio Projects\C_CodePic\L\Debug>l d:\test.txt

hello world


오홍...파일내용을 출력해주는군요.
근데 전부 소문자로만 출력하네요.
게다가 !는 화장실 갔는지 사라지고 안보입니다. -_-;
어따 빼먹었을까나???

이번엔 옵션에 숫자를 줬습니다.
D:\Visual Studio Projects\C_CodePic\L\Debug>l d:\test.txt 1

hello
world

오홍...이거 반으로 쪼개서 내려보내버리는군요.

근데 옵션으로 숫자 2를 줘도 3을줘도 같은결과가 나오길래
앗싸리 111을 줘봤습니다.
물론 test.txt의 HelloWorld!도 무지하게 많이 집어넣어보았습니다.

D:\Visual Studio Projects\C_CodePic\L\Debug>l d:\test.txt 111

hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world
hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world
hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world
hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world
hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world
hello world hello world hello world hello world hello world hello world hello wo
rld hello world hello world

허거덩 -_-; 너무 많이 집어넣었나봅니다.
도대체 무엇을 하는 프로그램일까요?
역시 진실은 저 건너 어딘가에...;;;
이만 밤샘작업...아니 비상대기 중인 Shiftkey였습니다. -_-;
지금 현장에 가봐야하는군요. 그래서 고만씁니다.

아래는 소스코드입니다.
테터툴즈의 width때문에 이미지가 조금 깨지네요. ^^;

                                       #include<stdio.h>
                   #             include <time.h>
                 /*         ,*/#     include         <stdlib.h>
                /*       o*/      typedef char*l;typedef
               int    L;L  _,  D,e,A,T,H,N,O,t,E
              ; L   X(l o){return(L)(*o+=((*o>64&&*o<91)?32:0)
             );}   typedef union{l          I;L i;}h;typedef/*L*/void
             P;l  x,y;FILE*f;typedef struct   {L i,g;h*t;}v;v V[26],w;L s
             (l d){for(D=0;*d++;D++);return D;}P p(L o){putchar(o     );}P k
             (L o){fseek(f,0,o);}P F(P*o){free(o);}P S(v*o,l d){h*
              a,*b,*c;D=sizeof(h);if(!        o->t)o->t=(h*)malloc((
               o->g=32)*D);if(o->t&&o->     i      +1>o->g){if((a=c=(h
             *)malloc((o->g*2)*D))){b =o->t;for(D=o  ->i;-D--;a++->i=b++
            ->i);F(o->t)     ; o->t=c;o    -> g*=2;}}if(o->t)o->t[o->i++]
          .I=d;}P q(l/**/o       ){for(;*o      ;p(*o++));}P R(v*l){l->t=(h
         *)0;l->i=l->g=0;}P Z(      v*o){if(o->   t)F(o->t);}P z(l a,l b){for
        (N=0;*a&&*b&&*a==*b;a++,b    ++,N++);}P Q(  P){fclose(f);}L main(L u,l
       * U){l a="fopen error\n";if(u<  2){;q("<file> [width] [...]\n");}else{if(
       ( f=fopen(U[01],  "rb"))){k(2);_= ftell(f);if(_>9&&(y=(l)malloc (_+1))){k(0)
      ; y[fread(y ,1,_,f)  ]=0;Q();;for( e=0;e<26;R(&V[e++]));R(&w);for(        x=y;_
      --;*(x++)=  0){if((*    x>64&&*x<91)  ||(*x>96&&*x<123)){S(&(V[X(x)-
     97] ),(l)w  .i);for(S( &w ,x);_--?(*x>64&&*x<91)||(*x>96&&*x<123)||(*x
     >47 &&58>*  x):0 ;x++)X (x);_ ++;}}if((_=(u>2)?atoi(U[2]):80)<1)_=80;if(
     u> 3){++x;  for(  srand( time(  0))   ;u-->3;){p(10);t=s(x=U[u]);for(  e=0
     ;e <t; e++  )X(x+e);q(x);for(E=   _-1-s(U[u-1]);t<E;t+=1+s(x)){for(A=    e=0
     ;! A | (t   +1+s  (w.t[e].I)>=_)   /* ooo `*/;){O=*x-97;e=rand()%w.i;A      =
     O  > - 1?O  </* o888 */26 :0;if(A /* 8888b  */){if(V[O].i){z(x,w.t[e=V[
     O  ] .t[rand(/* 88888 */)%    V/*  9 88888   */[O].i].i].I);H=N; for(  A
          =0;A<V[O]/*9888P x */.     /*    9888  */i/2;A++){T=V[O].t[  rand
          ()%V[O].i] .i;z(x  , w.      t   [T].I)  ;if(-N<-H){H=N;e=T    ;}}
           e= (e+1/*   ""    (                      */)%w.i;}}}p(32);q     (x
           =w .t[e].         I                      );}}}else{t=_;for(      e=
           0;  e<w.i        ;                        ++e){if(_>(s(w.t[        e
            ]  .I)+1+       t                        )){p(32);t++;}else
            {p   (10)       ;                        t =0;}q(w.t [e].I)
             ;   t+=s(                                 w.t[e].I);  }}e=0
             ;    p(10)                                ;p(10 );;     for(
                   ;26 >                              e;Z (& V[e       ++
                    ])  ,          0);Z(&            w ); F   (y)       ;}
                    if   (                          !  y )     {Q
                     (    )                       ;    } }      if
                            (                   !     f          ){
                              q(a          );}}
                                 return-0;}
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2005/09/21 19:12 2005/09/21 19:12
Response
No Trackback , 2 Comments
RSS :
http://shiftkey.org/rss/response/26


블로그 이미지

Shiftkey가 살아가는 이런 저런 이야기......

- shiftkey

Notices

Archives

Authors

  1. shiftkey

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
160846
Today:
121
Yesterday:
156