Advertisement
Guest User

Daily Programmer Challenge #3 in C

a guest
Feb 12th, 2012
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.10 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define LONGEST_WORD 10
  4. #define WORD_LIST_LENGTH 1275
  5.  
  6. char word_list[WORD_LIST_LENGTH][LONGEST_WORD + 1];
  7. char sort_list[WORD_LIST_LENGTH][LONGEST_WORD + 1];
  8. char word_decode[][LONGEST_WORD + 1] = {"mkeart~~~~", "sleewa~~~~", "edcudls~~~", "iragoge~~~", "usrlsle~~~",
  9.                                         "nalraoci~~", "nsdeuto~~~", "amrhat~~~~", "inknsy~~~~", "iferkna~~~"};
  10. char sort_decode[][LONGEST_WORD + 1] = {"mkeart~~~~", "sleewa~~~~", "edcudls~~~", "iragoge~~~", "usrlsle~~~",
  11.  
  12.                                       "nalraoci~~", "nsdeuto~~~", "amrhat~~~~", "inknsy~~~~", "iferkna~~~"};
  13.  
  14. void list_swap(int a, int b){
  15.     char temp = sort_list[a][b + 1];
  16.     sort_list[a][b + 1] = sort_list[a][b];
  17.     sort_list[a][b] = temp;
  18. }
  19.  
  20. void list_sort(){
  21.     int v_one = 0, v_two = 0;
  22.     int i = 0, j = 0, k = 0;
  23.  
  24.     for(i = 0; i < WORD_LIST_LENGTH; i++){
  25.         for(j = 0; j < LONGEST_WORD; j++){
  26.             for(k = j; k >= 0; k--){
  27.                 v_one = (int)sort_list[i][k];
  28.                 v_two = (int)sort_list[i][k + 1];
  29.                 if(v_one > v_two && (k + 1) < LONGEST_WORD){
  30.                     list_swap(i, k);
  31.                 }
  32.             }
  33.         }
  34.     }
  35. }
  36.  
  37. void decode_swap(int a, int b){
  38.     char temp = sort_decode[a][b + 1];
  39.     sort_decode[a][b + 1] = sort_decode[a][b];
  40.     sort_decode[a][b] = temp;
  41. }
  42.  
  43. void decode_sort(){
  44.     int v_one = 0, v_two = 0;
  45.     int i = 0, j = 0, k = 0;
  46.  
  47.     for(i = 0; i < (sizeof(sort_decode) / (LONGEST_WORD + 1)); i++){
  48.         for(j = 0; j < LONGEST_WORD; j++){
  49.             for(k = j; k >= 0; k--){
  50.                 v_one = (int)sort_decode[i][k];
  51.                 v_two = (int)sort_decode[i][k + 1];
  52.                 if(v_one > v_two && (k + 1) < LONGEST_WORD){
  53.                     decode_swap(i, k);
  54.                 }
  55.             }
  56.         }
  57.     }
  58. }
  59.  
  60. int compare(int a, int x, int y){
  61.     if(sort_decode[a][y] == sort_list[x][y]){
  62.         if((y + 1) < LONGEST_WORD){
  63.             return compare(a, x, y + 1);
  64.         }
  65.         else{
  66.            return 1;
  67.         }
  68.     }
  69.     else{
  70.         return 2;
  71.     }
  72. }
  73.  
  74. int main(){
  75.     char line[LONGEST_WORD];
  76.     FILE *file;
  77.     file = fopen("wordlist.txt", "rt");
  78.     int i = 0, k = 0, m = 0, n = 0;
  79.  
  80.     for(i = 0; i < WORD_LIST_LENGTH; i++){
  81.         fgets(line, LONGEST_WORD, file);
  82.         for(k = 0; k < LONGEST_WORD; k++){
  83.             if(line[k] == '\n'){
  84.                 while(k < LONGEST_WORD){
  85.                     word_list[i][k] = '~';
  86.                     sort_list[i][k] = '~';
  87.                     k++;
  88.                 }
  89.                 break;
  90.             }
  91.             else{
  92.                 word_list[i][k] = line[k];
  93.                 sort_list[i][k] = line[k];
  94.             }
  95.         }
  96.     }
  97.     fclose(file);
  98.  
  99.     list_sort();
  100.     decode_sort();
  101.  
  102.     for(m = 0; m < (sizeof(sort_decode) / (LONGEST_WORD + 1)); m++){
  103.         for(n = 0; n < WORD_LIST_LENGTH; n++){
  104.             if(compare(m, n, 0) == 1){
  105.                 printf("%s decoded is %s\n", word_decode[m], word_list[n]);
  106.             }
  107.         }
  108.     }
  109.  
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement