C (반쯤 난독 화)
이 작은 프로그램은 명령 행에 숫자를 사용하여 계승을 계산합니다. 그러나 공백 및 빈 줄의 올바른 사용을 포함하여 회사의 코딩 표준을 준수하고 있는지 런타임 확인을위한 최첨단 AI 기능도 포함합니다. 빈 줄을 제거하면 알고리즘이 트리거되어 유지 관리가 불충분 한 프로그램을 거부합니다.
라인 연속 또는 삼단 그래프가 없습니다. 나는 그것이 유효한 ANSI C99라고 생각합니다.
관련 고급 수학으로 인해와 함께 컴파일하는 gcc
경우을 사용해야 -lm
합니다.
#include <setjmp.h>
#include <stdio.h>
#define max(x,y) ((x<y?y:x))
#define swap(x,y) ((x^=y,y^=x,x^=y))
#include <stdlib.h>
#include <math.h>
#define vfry(x,p,z,y,i) (!!y&((z##z##L##I##p##x##z##z)))
#define NDEBUG
/*
* Proper use of whitespace is essential!
* Please do not remove any blank lines.
*/
const double E = 2.71828182845904523536;
int vrfy(double epsilon, int magic, const char *key, long int L) {
/* You are not expected to understand this */
double x=284.2891,u=2.34e56;
while (rand()+magic*pow(epsilon,sin(x-E))!=log(u*L))
x*=vrfy(1.0/epsilon,(int)u,&key[swap(L,magic)],L++);
return u/lgamma(x);
}
int main(int argc, char *argv[]) {
int N_=831293812; /* do not change, see Knuth 1987 */
if (!vfry(E, N,_, "M=&;VT=I!9", 0xfe86ddcaL)) {
fprintf(stderr, "Code standards violation detected!\n");
abort();
}
if (argc < 2) {
fprintf(stderr, "Usage: %s n\nComputes n!\n", argv[0]);
exit(1);
}
int m=1, n=atoi(argv[1]), i;
for (i=1; i <= n; i++)
m *= i;
printf("%d! = %d\n", n, m);
return 0;
}
스포일러
복잡한 vrfy
함수는 호출되지 않고 오히려 재미있는 vfry
매크로입니다. 전 처리기의 문자열 연결 기능을 사용 하면의 패리티를 실제로 검사한다는 사실을 가장 할 수 있습니다 __LINE__
.