태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

CodeGolf - 7세그먼트 출력

2009/07/17 10:01


코드골프에 올라와있던 문제.

http://codegolf.com/seven-segment-displays


#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#define l(x) (int)(pow(10,x)+0.5)
#define a(x) ((n[m%l(j+1)/l(j)]>>d+x)&0x01)
#define p(x) printf(x)
#define c(x) case x:
int main(void){
    char n[]={119,36,93,109,46,107,123,37,127,111};int i,j,d,m;char s[11];
    p("->");scanf("%s",s);m=atoi(s);
    for(i=0;i<9;i++,p("\n")){
        for(j=strlen(s)-1;j>=0;j--){d=0;
            switch(i){
                c(0)c(4)c(8)d=i==0?0:i==4?3:i==8?6:0;a(0)?p(" ***  "):p("      ");break;
                c(5)c(6)c(7)d=3;
                default:a(1)?p("*   "):p("    ");a(2)?p("* "):p("  ");
    }}}return 0;
}

이 코드가 프갤에 올려놓았던 것이었고..



디- 가 ANSI-C표준을 이용해 200byte대로 확 줄여버리면서 내가 버로우 탔음.

역시 변태코드를 양산하기엔 C99보단 ANSI C 인가..




디 -의 246byte 코드
char s[99],*p,k;int g[]={78,82,0,-35,422,92,-50};T(x,M,m,z){
printf("%s %c",g[x]-97&1<<*p-48?M:m,p[1]?32:z);}V(x)
{while(++k%5)for(p=s;*p;++p)k%5-1?x<6?T(x+1,"* ","  ",32),
T(x+2,"*"," ",10):0:T(x," *** ","     ",10);}
main(){gets(s);V(0);V(3);V(6);}
크리에이티브 커먼즈 라이선스
Creative Commons License

유리한 코드창고/변태코드