#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void rtfm(char * exe) {
	printf("Usage: %s string\n\tstring - what you want to be converted to leetspeak\n", exe);
	exit(1);
}

void char2leet(char letter) {
	if(letter > 0x60 && letter < 0x7B) letter = toupper(letter);
	if(letter < 0x41
	|| (letter > 0x5A && letter < 0x61)
	|| letter > 0x7A) printf("%c ", letter);
	else switch(letter-0x41) {
		case 0: printf("4 "); break;		/*A*/
		case 1: printf("|3 "); break;		/*B*/
		case 2: printf("( "); break;		/*C*/
		case 3: printf("|) "); break;		/*D*/
		case 4: printf("3 "); break;		/*E*/
		case 5: printf("|= "); break;		/*F*/
		case 6: printf("6 "); break;		/*G*/
		case 7: printf("|-| "); break;		/*H*/
		case 8: printf("| "); break;		/*I*/
		case 9: printf("_| "); break;		/*J*/
		case 10: printf("|< "); break;		/*K*/
		case 11: printf("|_ "); break;		/*L*/
		case 12: printf("|^| "); break;		/*M*/
		case 13: printf("|\\| "); break;	/*N*/
		case 14: printf("0 "); break;		/*O*/
		case 15: printf("|> "); break;		/*P*/
		case 16: printf("0, "); break;		/*Q*/
		case 17: printf("|,> "); break;		/*R*/
		case 18: printf("5 "); break;		/*S*/
		case 19: printf("+ "); break;		/*T*/
		case 20: printf("|_| "); break;		/*U*/
		case 21: printf("\\/ "); break;		/*V*/
		case 22: printf("\\/\\/ "); break;	/*W*/
		case 23: printf(">< "); break;		/*X*/
		case 24: printf("'/ "); break;		/*Y*/
		case 25: printf("'/_ "); break;		/*Z*/
	}
}

int main(int argc, char * argv[]) {
	size_t string[2];
	if(argc != 2) rtfm(argv[0]);
	string[1] = strlen(argv[1]);
	for(string[0] = 0; string[0] < string[1]; ++string[0]) char2leet(argv[1][string[0]]);
	puts("");
	return 0;
}
