mirror of
https://github.com/paradizelost/AdventOfCode2020.git
synced 2024-11-28 20:23:58 -06:00
41 lines
1.3 KiB
PowerShell
41 lines
1.3 KiB
PowerShell
|
$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
|