Inputs:
- Target number: 20
- Factors: [19]
Output
- 19
function sumOfMultiples(targetNumber, factors) { | |
var multiples = []; | |
if (factors.length === 0) { | |
factors = [3, 5]; | |
} | |
factors.forEach(function(factor) { | |
var currentMultiple; | |
for (currentMultiple = factor; currentMultiple < targetNumber; currentMultiple += factor) { | |
if (multiples.indexOf(currentMultiple) === -1) { |
def sum_of_multiples(target, factors) | |
multiples = [] | |
factors = [3, 5] if factors.length == 0 | |
factors.each do |factor| | |
current_multiple = factor | |
while current_multiple < target | |
multiples << current_multiple | |
current_multiple += factor |
Determine a list of all multiples of a set of factors up to a target value, then filter the list of multiples to the unique values. Finally, compute and return the sum of the unique multiples.
multiples
that will contain the multiples.[3, 5]
factor
in the factors
list:
current_multiple
to factor
to keep track of the multiples of factor
.current_multiple
< target
current_multiple
to multiples
.factor
to current_multiple
.multiples
.A mental model is an explanation of someone's thought process about how something works in the real world (source: wikipedia)
A problem domain is the area of expertise or application that needs to be examined to solve a problem (source: problem domain wiki). It limits the scope of the problem.
Pitfall | Description |
---|---|
Missed requirements | Missed requirements can lead to unnecessary refactoring, especially if the initial implementation cannot accommodate the missed requirements. |
Unforeseen edge cases | Unforeseen edge cases can also lead to unnecessary refactoring or the insertion of new code that obscures the intent of the code. |
Hard to understand code | When you refactor code to accommodate a new and better understanding of the problem, the resulting code is often harder to understand since your revised logic may be more complex than otherwise. |
Difficult to maintain code | The refactors can sometimes lead to unintended dependencies that make it difficult to change the code. |
Difficult to scale code | Not planning for scaling can lead to inefficiencies and complexity. |