
TV 애니메이션 시리즈인 South Park에 등장하는 Kenny McCormick이라는 아이가 있습니다. Kenny의 큰 특징으로는 거의 매 에피소드마다 죽어 버린다는 것과, 대사가 도저히 알아 먹을 수 없다는 것이 있습니다. (그래서 위키백과에서는 아예 Kenny가 죽지 않는 에피소드 목록을 소개하고 있을 정도입니다) 이에 착안해서 평범한 문자열을 케니의 언어로 바꿔 주는 것을 Kennify라고 하며, 이 프로그램은 이 작업을 해 주는 작은 프로그램입니다.
Kennify에 대한 자세한 내용은 hurd 님의 블로그를 참고하세요.
#include<stdio.h>
#define C char
int main
(int c,C
** v)
{{ int i,j,k; if
(c >1){for (i=!v++ ;(
c= i[*v]& ~32)&& !(
# define N(n) {;putchar(n) ;}
c> 64&&c< +91 &&-70+c &&
c- 77&&80 - c);i+=1 );
if ( c)for (; c =* *v&~32; ++
*v ) if(c< 65 ||90< c )N
(* * v)else { c -=65;N ( **
v& + 32|(c /9 %3 )["MPF " ])
N( " mpf"[c /3%3+3 ] )N
(( c% 3)["mpf"])}else {; for
(i= 0;* *v ;( ++*
v)) if((j=**v|32)>122 ||j
<97) { N (** v
)} else {k= i%
3? k:**v;c =(i++% 3?
c* 3:0)+j%12/ 3; if
(! (i % 3) )N
((k&96) + c+1)}}}
else{N( 5 *17)N(5
*23)N( 7 +90);;
printf("ge: %s <string>\n"
, *
v);}/**tokigun**/return 0;}}
이 프로그램은 Microsoft Visual C++ 6.0과 gcc 3.x에서 테스트되었으며, 아마 웬만한 C 컴파일러에서는 잘 컴파일 될 것이라고 생각합니다.
이 프로그램은 첫째 인자로 문자열을 받습니다. (아무 인자도 주어지지 않으면 사용법을 출력합니다) 문자열에 들어 있는 알파벳이 m, p, f만으로 이루어져 있다면 이미 Kennify된 문자열로 가정하고 원래 문자열로 변환해서 출력하며, 아니라면 그냥 문자열을 Kennify해서 출력합니다.
$ kenny Usage: kenny <string> $ kenny TokigunStudio3! FmpppfpmpmffmfmfmfpppFmmfmpfmfmpmmffppf3! $ kenny FmpppfpmpmffmfmfmfpppFmmfmpfmfmpmmffppf3! TokigunStudio3!