mirror of
https://github.com/Xevion/exercism.git
synced 2025-12-08 18:07:19 -06:00
36 lines
947 B
PowerShell
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
|
|
} |