Code Pyre

All Code Dies and Burns in Time

Fork me on GitHub

Project Euler: Problem 2 in PowerShell

| Comments

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

The Fibonacci sequence is much more fun. You can get close to this implementation with yield return in C#, but the multiple assignment trick has yet to come to C# :(.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function Get-FibonacciSequence {
  param([int]$max)
  0
  1
  for($i = $j = 1; $i -lt $max) {
    $i
    $i,$j = ($i + $j),$i
   }
}

filter Select-EvenValues { if($_ % 2 -eq 0) { $_ } }

function Solve-Problem2 {
  $upperBound = 4000000
  $evenValues = (Get-FibonacciSequence $upperBound) | Select-EvenValues
  ($evenValues | Measure-Object -Sum).Sum
}

Write-Host "Elapsed Time (s): " (Measure-Command {Solve-Problem2}).TotalSeconds
Write-Host "Solution: " (Solve-Problem2)

Elapsed Time (s):  0.0049869
Solution:  4613732

Comments