AdventOfCode2020/Advent Of Code Day 7 part2.ps1

41 lines
1.3 KiB
PowerShell
Raw Permalink Normal View History

2020-12-08 09:51:11 -06:00
$inputdata = (get-content -Raw .\aocd7input.txt) -split "`n"
$colorrules=@{}
foreach($rule in $inputdata){
if($rule -eq ""){
continue
} else {
$rule = $rule -replace "bags", ""
$rule = $rule -replace "bag", ""
$outerbag, $innerbags = $rule -split " contain ", 2
$innerbagsrule= $innerbags-split ","
$outerbag=$outerbag.trim() -replace '[^a-zA-Z]',""
$colorrules[$outerbag]=@{}
foreach($myrule in $innerbagsrule){
$count, $color = $myrule.trim() -split " ",2
$color = $color.trim() -replace '[^a-zA-Z]',""
#write-host "Color:$color-Count:$count"
$colorrules[$outerbag].add($color,$count)
}
}
}
function get-innerbags(){
param(
$BagColor
)
if($bagcolor -eq "other"){return 1} else {
$directbags = $colorrules.$BagColor.values |?{$_ -ne "no"}|measure-object -sum|select-object -ExpandProperty Sum
foreach($bag in $colorrules.$BagColor.keys){
$numofbag = $colorrules.$BagColor.$bag
if($numofbag -eq "no"){
} else {
for($i=0; $i -lt $numofbag;$i++){
get-innerbags -BagColor $bag
}
$numofbag
}
}
}
}
get-innerbags -BagColor "shinygold" | measure-object -Sum