Advertisement
Guest User

Part 1

a guest
Dec 9th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. [long[]]$inputFile = Get-Content 'C:\Scripts\AdventOfCode 2020\9\input.txt'
  2.  
  3. Function checkPreamble {
  4. Param(
  5. $checkingNumber,
  6. $preamble,
  7. [switch]$odd
  8. )
  9. $evenNumbers = $preamble -match '^\d*[02468]$'
  10. $oddNumbers = $preamble -match '^\d*[13579]$'
  11. if (!$odd){
  12. For($j = 0; $j -lt $evenNumbers.Count; $j++){
  13. if($evenNumbers -contains ($checkingNumber - $evenNumbers[$j])){
  14. return $false
  15. }
  16. }
  17.  
  18. For($j = 0; $j -lt $oddNumbers.Count; $j++){
  19. if($oddNumbers -contains ($checkingNumber - $oddNumbers[$j])){
  20. return $false
  21. }
  22. }
  23. } else {
  24. For($j = 0; $j -lt $evenNumbers.Count; $j++){
  25. if($oddNumbers -contains ($checkingNumber - $evenNumbers[$j])){
  26. return $false
  27. }
  28. }
  29. }
  30. return $checkingNumber
  31. }
  32.  
  33. $startIndex = 26
  34.  
  35. For ($i = $startIndex; $i -lt $inputFile.Count; $i++){
  36. $preamble = $inputFile[($i -25)..($i -1)]
  37. switch -Regex ($inputFile[$i]){
  38. '^\d*[02468]$' {
  39. $returnedVariable = checkPreamble -checkingNumber $inputFile[$i] -preamble $preamble
  40. if($returnedVariable -ne $false){
  41. $contagiousNumber = $returnedVariable
  42. break
  43. }
  44. }
  45. '^\d*[13579]$' {
  46. $returnedVariable = checkPreamble -checkingNumber $inputFile[$i] -preamble $preamble -odd
  47. if($returnedVariable -ne $false){
  48. $contagiousNumber = $returnedVariable
  49. break
  50. }
  51. }
  52. }
  53. }
  54.  
  55. Write-Output $contagiousNumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement