mirror of
https://github.com/Xevion/exercism.git
synced 2025-12-17 10:11:49 -06:00
PowerShell - sum-of-multiples
This commit is contained in:
36
powershell/sum-of-multiples/SumOfMultiples.ps1
Normal file
36
powershell/sum-of-multiples/SumOfMultiples.ps1
Normal file
@@ -0,0 +1,36 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user