Advertisement
SadBunny

AOC 2022 Day 3 parts 1+2

Dec 3rd, 2022
1,461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Awk 0.94 KB | Source Code | 0 0
  1. ########################################################################
  2. #### PART 1 ####
  3.  
  4. BEGIN { prio = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
  5.  
  6. {
  7.     l=length($0)/2; split(substr($0, 1, l), ar, "");
  8.  
  9.     for (i in ar) {
  10.         ir = index(substr($0, l+1), ar[i]);
  11.         if (ir > 0) {
  12.             total += index(prio, ar[i]); break;
  13.         }
  14.     }
  15. }
  16.  
  17. END { print total; }
  18.  
  19. ########################################################################
  20. #### PART 2 ####
  21.  
  22. BEGIN { prio = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
  23.  
  24. {
  25.     line[NR % 3] = $0;
  26.  
  27.     if (NR % 3 != 0) { next; }
  28.  
  29.     for (i in line) {
  30.         split(line[i], ar1, "");
  31.         for (j in ar1) {
  32.             ar2[ar1[j]][i+1] = 1;
  33.         }
  34.     }
  35.     for (i in ar2) {
  36.         if(1 in ar2[i] && 2 in ar2[i] && 3 in ar2[i]) {
  37.             score += index(prio, i);
  38.         }
  39.     }
  40.     delete ar2;
  41. }
  42.  
  43. END { print score; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement