gen_thx_code

在华为时写过一个《感谢代码》,昨天有同事旧事重提,提起那段代码,勾起了我对项目组的一些美好回忆,9个月过去了,望大家都好。我已经不记得当时是怎么写代码的了,但原理记得清楚,现在重写了一份,这次我把产生感谢代码的代码贴出来,它是一份C代码,编译运行以后打印出一段代码,这段代码就是感谢代码(一份C代码, 不能用C++编译器编译),感谢代码编译运行之后是几行感谢的话。雕虫小技,博君一笑。
gcc gen_thx_code.c -o gen_code && ./gen_code > thx.c && cat thx.c && gcc thx.c -o thx && ./thx

#include <stdio.h>

const char * raw = 
"Feng Ge,"
"Wang Shiqiang,"
"Kui Ge,"
"Huang Jiaoshou,"
"Xiao Xuzong,"
"Zou Yan,"
"Hai Yan,"
"Liu Yi,"
"Mei Li,"
"Hu Chuanlie,"
"Zheng Yunhang,"
"De Bao,"
"Tao Ge,"
"...\n"
"Thank you!\n"
;

const char * fmt = 
"11111111111111111111111111111111111111111111111111\n"
"11111111111111111111111111111111111111111111111111\n"
"1111111111111111111111 111111111111111111111111111\n"
"11111111   1111111111    111111111111111   1111111\n"
"11111111    111111111   1111111111111111   1111111\n"
"111111111    11111             111111111   1111111\n"
"1111111111    1111   1111111   111111111   1111111\n"
"11111111111 111111   1111111   111111111   1111111\n"
"111111111111111111             11              111\n"
"11111  11111111111             111111111   1111111\n"
"11111       111111   1111111   111111111   1111111\n"
"111111111   111111   1111111   111111111   1111111\n"
"111111111   111111             11   1111   1111111\n"
"111111111   111111   1111111   111   111   1111111\n"
"111111111   111111   1111111   111   111   1111111\n"
"111111111   111                1111   11   1111111\n"
"111111111   111                111111111   1111111\n"
"111111111   11 11111111   11   111111111   1111111\n"
"111111111       11111    111   111111111   1111111\n"
"111111111     111111    1111   111111111   1111111\n"
"11111111     11111    111111   111111111   1111111\n"
"11111111   1111      1111111   111111111   1111111\n"
"11111111111111111  11111       11111       1111111\n"
"1111111111111111111111111    11111111    111111111\n"
"11111111111111111111111111111111111111111111111111\n"
"11111111111111111111111111111111111111111111111111\n"
"11111111111111111111111111111111111111111111111111\n"
;

int main(void) {
  int okay = 0;
  int v = 64;

  printf("%s\n", "#define main(l11)char*l=#l11,l1=1;main(){for(;(l1=(l1<<!!(040-0[l]))+!(0[l]-061))>>7?((putchar(l1&0177))?(l1=1):0):1;l++);}");
  printf("main(\n");

  for(; *fmt; fmt++) {
    if(*fmt==' ' || *fmt=='\n') {
      printf("%c", *fmt);
    } else {
      printf("%c", *raw & v ? '1' : 'l'); 
      v >>= 1;
      if(v == 0) {
        v = 64;
        if(*raw) {
          ++raw; 
        } else {
          okay = 1;
        }
      }
    }
  }

  if(okay) {
    printf(")\n");
  } else {
    fprintf(stderr, "ERROR: raw string too long, and fmt string too short!\n");
  }

  return 0;
}

下面就是运行gen_thx_code生成的C代码,它看起来很奇怪,但可以编译

#define main(l11)char*l=#l11,l1=1;main(){for(;(l1=(l1<<!!(040-0[l]))+!(0[l]-061))>>7?((putchar(l1&0177))?(l1=1):0):1;l++);}
main(
1lll11l11ll1l111l111l11ll111l1lllll1lll11111ll1l1l
1l11ll1l1l11111llll111l111l11ll111l1lllll1l1ll1111
l1lll11l1ll1111lll111l 1ll111llll111l111l11ll111l1
l11ll1ll   1l11111l1l    111l1ll1l1lllll   1lll111
11ll1l1l    1l11ll1ll   1lll111l1l111lll   l111l11
1l11ll111    l1lll             ll1ll1l1l   11l1ll1
11llll111l    1111   111ll11   11l1lll11   l111111
1l1l1l1l11l l1l11l   ll11l1l   l111llll1   11l1111
l1lllll1l11lll111l             1l              111
11l1l  11l111111l1             11l11ll11   1l1l11l
l1l11       l1l11l   1111111   l1l1l1lll   ll1l11l
l111llll1   11l111   ll1l11l   l1ll1lll1   1llll11
1l1ll1l1l   llll1l             11   ll11   1llll11
1l111ll1l   11ll1l   l11ll11   l1l   l11   11l1l1l
1lllll1l1   1ll111   l1ll1l1   l11   ll1   ll11l11
1ll1l111l   1ll                1l1l   ll   ll1ll11
ll11l1ll1   l1l                11ll1ll1l   ll111l1
l1l1lllll   1l lll1111l   1l   ll111l1l1   11llll1
11l111l11       l11ll    11l   1ll111ll1   l1l1l11
ll1l11l1l     11l1ll    l11l   l1l111l11   1l11ll1
11l1llll     l1l11    ll1111   l1l111l11   1l11l1l
ll11llll   111l      111l11l   l111l1l11   ll1lll1
ll11ll1l1l1lllll1  llll1       l11ll       ll111l1
111l1l11ll1l1l1ll11llll11    1l1111l1    lllll1lll
11111ll1l1l1l11lll1l111ll1l111ll1l111llll1l1l1l1l1
ll11l1lll11llll111l111l11l1l11l1lllll1111ll111l111
1111l1l1l1llll1lll1l1lllllllllllllllllllllllllllll
)

你可能感兴趣的:(gen_thx_code)