#include #include #include #include #include #define MAX 100001 // FIXME: Not passing all test cases bool caps = false; bool shift = false; void toggleCaps() { caps = !caps; } char strokeToKey(char stroke[30]) { char key = '-'; if (strcmp(stroke, "clank") == 0) { key = 'a'; } else if (strcmp(stroke, "bong") == 0) { key = 'b'; } else if (strcmp(stroke, "click") == 0) { key = 'c'; } else if (strcmp(stroke, "tap") == 0) { key = 'd'; } else if (strcmp(stroke, "poing") == 0) { key = 'e'; } else if (strcmp(stroke, "clonk") == 0) { key = 'f'; } else if (strcmp(stroke, "clack") == 0) { key = 'g'; } else if (strcmp(stroke, "ping") == 0) { key = 'h'; } else if (strcmp(stroke, "tip") == 0) { key = 'i'; } else if (strcmp(stroke, "cloing") == 0) { key = 'j'; } else if (strcmp(stroke, "tic") == 0) { key = 'k'; } else if (strcmp(stroke, "cling") == 0) { key = 'l'; } else if (strcmp(stroke, "bing") == 0) { key = 'm'; } else if (strcmp(stroke, "pong") == 0) { key = 'n'; } else if (strcmp(stroke, "clang") == 0) { key = 'o'; } else if (strcmp(stroke, "pang") == 0) { key = 'p'; } else if (strcmp(stroke, "clong") == 0) { key = 'q'; } else if (strcmp(stroke, "tac") == 0) { key = 'r'; } else if (strcmp(stroke, "boing") == 0) { key = 's'; } else if (strcmp(stroke, "boink") == 0) { key = 't'; } else if (strcmp(stroke, "cloink") == 0) { key = 'u'; } else if (strcmp(stroke, "rattle") == 0) { key = 'v'; } else if (strcmp(stroke, "clock") == 0) { key = 'w'; } else if (strcmp(stroke, "toc") == 0) { key = 'x'; } else if (strcmp(stroke, "clink") == 0) { key = 'y'; } else if (strcmp(stroke, "tuc") == 0) { key = 'z'; } else if (strcmp(stroke, "whack") == 0) { key = ' '; } else if (strcmp(stroke, "pop") == 0) { key = '%'; } else if (strcmp(stroke, "bump") == 0) { toggleCaps(); key = '$'; } else if (strcmp(stroke, "dink") == 0) { shift = true; key = '>'; } else if (strcmp(stroke, "dink") == 0) { shift = false; key = '<'; } // printf("%s : %c\n", stroke, key); return key; } char upOrDown(char c) { if ((!shift && caps) || (shift && !caps)) { return toupper(c); } caps = false; return c; } void writeToArr(char sentence[MAX], char stroke[30], int *idx) { char key = strokeToKey(stroke); if ((key <= 'z' && key >= 'a') || key == ' ') { sentence[*idx] = upOrDown(key); *idx += 1; } else if (key == '%') { sentence[*idx] = '-'; *idx -= 1; } else { return; } } void printArr(char sentence[MAX], int length) { for (int i=0; i