mirror of
https://github.com/paradizelost/AdventOfCode2020.git
synced 2024-11-25 02:44:45 -06:00
Combined script that provides answers to both parts.
This commit is contained in:
parent
7460b6c29f
commit
14e6946eae
68
Advent Of Code Day 9-Combined.ps1
Normal file
68
Advent Of Code Day 9-Combined.ps1
Normal file
@ -0,0 +1,68 @@
|
||||
$inputdata=import-csv -header "Number" .\aocd9input.txt
|
||||
$inputdata | %{$_.Number = [int64]$_.Number}
|
||||
$buffer=25
|
||||
$mynumbers=$inputdata[0 .. 24] | select-object -ExpandProperty Number
|
||||
$tolookfor=-1
|
||||
for($i=25; $i -lt $inputdata.count; $i++){
|
||||
|
||||
$minval = (($mynumbers|Sort-Object )[0 .. 1] |measure-object -sum | select-object -ExpandProperty sum)[0]
|
||||
$maxval = (($mynumbers|Sort-Object )[-2 .. -1] |measure-object -sum | select-object -ExpandProperty sum)[0]
|
||||
$newnum = $inputdata[$i].Number
|
||||
#write-host "Prior $($mynumbers[-1]) : $newnum"
|
||||
if($newnum -lt $minval){
|
||||
#write-host "ERROR $newnum too low"
|
||||
$tolookfor = $newnum
|
||||
break
|
||||
}
|
||||
if($newnum -gt $maxval){
|
||||
#write-host "ERROR $newnum too high"
|
||||
$tolookfor = $newnum
|
||||
break
|
||||
}
|
||||
$possiblevalues = @()
|
||||
for($b=0;$b -lt $mynumbers.Count;$b++){
|
||||
$mynum=$mynumbers[$b]
|
||||
for($a=1;$a -lt $mynumbers.count;$a++ ){
|
||||
$nextnum = $mynumbers[$a]
|
||||
if($mynum -eq $nextnum){
|
||||
#write-host "$mynum is same as $nextnum"
|
||||
continue
|
||||
}
|
||||
$possiblevalues += $mynum + $nextnum
|
||||
}
|
||||
}
|
||||
if($possiblevalues -notcontains $newnum){
|
||||
#write-host "ERROR $newnum not a sum of prior $buffer numbers"
|
||||
$tolookfor = $newnum
|
||||
break
|
||||
}
|
||||
$null,$mynumbers=$mynumbers
|
||||
$mynumbers += $newnum
|
||||
}
|
||||
$howmanynums=2
|
||||
$found=$false
|
||||
if($tolookfor -eq -1){
|
||||
throw "Invalid Input for final check"
|
||||
}
|
||||
write-host "Part 1 Answer is $tolookfor"
|
||||
foreach($num in ($howmanynums .. $inputdata.count)){
|
||||
if($found){break}
|
||||
for($i=0;$i -lt $inputdata.count - $num; $i++){
|
||||
if($found){
|
||||
$break
|
||||
}
|
||||
$possiblevalues = @()
|
||||
$mynums = $inputdata[$i .. ($i + $num -1)]|Select-Object -ExpandProperty Number
|
||||
$mysum = $mynums | Measure-Object -sum | Select-Object -ExpandProperty Sum
|
||||
if($mysum -eq $tolookfor){
|
||||
$minnum = ($mynums | Measure-Object -minimum).minimum
|
||||
$maxnum = ($mynums | Measure-Object -Maximum).Maximum
|
||||
# write-host "$mynums sum to $mysum"
|
||||
# write-host "Smallest $minnum + Largest $maxnum = $($minnum + $maxnum)"
|
||||
write-host "Part 2 answer is $($minnum + $maxnum)"
|
||||
$found=$true
|
||||
break
|
||||
}
|
||||
#write-host "$mynums : $mysum"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user