Files
exercism/powershell/sum-of-multiples/SumOfMultiples.ps1
2021-11-26 02:30:29 -06:00

36 lines
947 B
PowerShell

Function Get-SumOfMultiples {
<#
.SYNOPSIS
Given a number, find the sum of all the unique multiples of particular numbers up to
but not including that number.
.DESCRIPTION
If we list all the natural numbers below 20 that are multiples of 3 or 5,
we get 3, 5, 6, 9, 10, 12, 15, and 18.
.PARAMETER Multiples
An array of the factors
.PARAMETER Limit
The value BELOW which we test for
.EXAMPLE
Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
Returns 23
#>
[CmdletBinding()]
Param(
[int[]]$Multiples,
[int]$Limit
)
$set = @{}
foreach ($Multiple in $Multiples) {
if ($Multiple -gt $Limit) { continue }
[int] $Maximum = [Math]::Floor($Limit / $Multiple)
if ($Multiple * $Maximum -ge $Limit) { $Maximum -= 1 }
1..$Maximum | % { $set[$_ * $Multiple] = $true }
}
return ($set.Keys | Measure-Object -Sum).Sum
}