crlogic

Day3

Dec 3rd, 2022
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. # Part 1
  2. [string[]]$rucksacks = $puzzleInput -split '\n' | Select -SkipLast 1
  3. $rucksack = $rucksacks[0]
  4. $allByteValues = foreach ($rucksack in $rucksacks) {
  5. $firstCompart = $rucksack.Substring(0,$rucksack.Length/2)
  6. $secondCompart = $rucksack.Substring($rucksack.Length/2)
  7. $duplicateObj = Compare ($firstCompart.ToCharArray() | group).Name ($secondCompart.ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive
  8. [char]$duplicateChar = $duplicateObj.InputObject
  9. if ($duplicateChar -cmatch '[a-z]') {
  10. $bval = ([byte]$duplicateChar) - 96
  11. }
  12. else {
  13. $bval = ([byte]$duplicateChar) - 38
  14. }
  15. $bval
  16. }
  17. ($allByteValues | Measure -Sum).Sum
  18.  
  19. # Part 2
  20. $elfCount = 0
  21. $allByteValues = foreach ($rucksack in $rucksacks) {
  22. $elfCount++
  23. if ($elfCount % 3 -ne 0) {
  24. continue
  25. }
  26. $elfGroup = $rucksacks[$($elfCount-3)..$($elfCount-1)]
  27. $firstTwo = (Compare ($elfGroup[0].ToCharArray() | group).Name ($elfGroup[1].ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive).InputObject
  28. [char]$foundChar = (Compare $firstTwo ($elfGroup[2].ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive).InputObject
  29. if ($foundChar -cmatch '[a-z]') {
  30. $bval = ([byte]$foundChar) - 96
  31. }
  32. else {
  33. $bval = ([byte]$foundChar) - 38
  34. }
  35. $bval
  36.  
  37. }
  38. ($allByteValues | Measure -Sum).Sum
  39.  
Advertisement
Add Comment
Please, Sign In to add comment