NAME
Project::Euler::Problem::P001 - Solutions for problem 001 - Sum filtered range
VERSION
version 0.20
HOMEPAGE
http://projecteuler.net/index.php?section=problems&id=1
SYNOPSIS
use Project::Euler::Problem::P001;
my $p1 = Project::Euler::Problem::P001->new;
my $default_answer = $p1->solve;
#  Use the default filter list of '3, 5'
$p1->solve(11);  #  3 + 5 + 6 + 9 + 10  ==  33
#  Didn't override the default answer so status is false!
$p1->status;  # 0
#  Change the filter list
$p1->multi_nums( [4] );
$p1->solve(25, 84);  #  4, 8, 12, 16, 20, 24  ==  84
#  Overrode the default answer with the right one so the status is true
$p1->status;  # 1
DESCRIPTION
This module is used to solve problem #001
This problem simply needs to find the sum of all the numbers within a range which are multiples of a set of integers. The range always starts at 1 and continues up to the provided input (1000 by default). The numbers are filtered using Project::Euler::Lib::Utils.
ATTRIBUTES
multi_nums
An array of positive integers that are used to filter out the number to sum.
This array is always kept sorted in order to optimize the solve function
- Isa
 - 
PosIntArry
 - Default
 - 
[3, 5] 
SETUP
Problem Number
001
Problem Name
Sum filtered list
Problem Date
2001-10-05
Problem Desc
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
Default Input
Default Answer
233,168
Has Input?
Yes
Help Message
You can change multi_nums to alter the way the program will function. If you are providing custom_input, don't forget to specify the wanted_answer if you know it!
INTERNAL FUNCTIONS
Validate Input
The restrictions on custom_input
A positve integer
Solving the problem
Loop from the first multi_num up to the max_number and filter all numbers that are not multiples of one/all of the multi_nums. Then use the List::More util 'sum' to return the sum of the filtered numbers. If nothing was found return 0 rather than undef.
ACKNOWLEDGEMENTS
AUTHOR
Adam Lesperance <lespea@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Adam Lesperance.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.