Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Part 1
- [string[]]$rucksacks = $puzzleInput -split '\n' | Select -SkipLast 1
- $rucksack = $rucksacks[0]
- $allByteValues = foreach ($rucksack in $rucksacks) {
- $firstCompart = $rucksack.Substring(0,$rucksack.Length/2)
- $secondCompart = $rucksack.Substring($rucksack.Length/2)
- $duplicateObj = Compare ($firstCompart.ToCharArray() | group).Name ($secondCompart.ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive
- [char]$duplicateChar = $duplicateObj.InputObject
- if ($duplicateChar -cmatch '[a-z]') {
- $bval = ([byte]$duplicateChar) - 96
- }
- else {
- $bval = ([byte]$duplicateChar) - 38
- }
- $bval
- }
- ($allByteValues | Measure -Sum).Sum
- # Part 2
- $elfCount = 0
- $allByteValues = foreach ($rucksack in $rucksacks) {
- $elfCount++
- if ($elfCount % 3 -ne 0) {
- continue
- }
- $elfGroup = $rucksacks[$($elfCount-3)..$($elfCount-1)]
- $firstTwo = (Compare ($elfGroup[0].ToCharArray() | group).Name ($elfGroup[1].ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive).InputObject
- [char]$foundChar = (Compare $firstTwo ($elfGroup[2].ToCharArray() | group).Name -ExcludeDifferent -IncludeEqual -CaseSensitive).InputObject
- if ($foundChar -cmatch '[a-z]') {
- $bval = ([byte]$foundChar) - 96
- }
- else {
- $bval = ([byte]$foundChar) - 38
- }
- $bval
- }
- ($allByteValues | Measure -Sum).Sum
Advertisement
Add Comment
Please, Sign In to add comment