Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [long[]]$inputFile = Get-Content 'C:\Scripts\AdventOfCode 2020\9\input.txt'
- Function checkPreamble {
- Param(
- $checkingNumber,
- $preamble,
- [switch]$odd
- )
- $evenNumbers = $preamble -match '^\d*[02468]$'
- $oddNumbers = $preamble -match '^\d*[13579]$'
- if (!$odd){
- For($j = 0; $j -lt $evenNumbers.Count; $j++){
- if($evenNumbers -contains ($checkingNumber - $evenNumbers[$j])){
- return $false
- }
- }
- For($j = 0; $j -lt $oddNumbers.Count; $j++){
- if($oddNumbers -contains ($checkingNumber - $oddNumbers[$j])){
- return $false
- }
- }
- } else {
- For($j = 0; $j -lt $evenNumbers.Count; $j++){
- if($oddNumbers -contains ($checkingNumber - $evenNumbers[$j])){
- return $false
- }
- }
- }
- return $checkingNumber
- }
- $startIndex = 26
- For ($i = $startIndex; $i -lt $inputFile.Count; $i++){
- $preamble = $inputFile[($i -25)..($i -1)]
- switch -Regex ($inputFile[$i]){
- '^\d*[02468]$' {
- $returnedVariable = checkPreamble -checkingNumber $inputFile[$i] -preamble $preamble
- if($returnedVariable -ne $false){
- $contagiousNumber = $returnedVariable
- break
- }
- }
- '^\d*[13579]$' {
- $returnedVariable = checkPreamble -checkingNumber $inputFile[$i] -preamble $preamble -odd
- if($returnedVariable -ne $false){
- $contagiousNumber = $returnedVariable
- break
- }
- }
- }
- }
- Write-Output $contagiousNumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement