A little of coordination for Rosettacode
bearophile
bearophileHUGS at lycos.com
Wed Mar 20 12:03:00 PDT 2013
ixid:
> The prime factorization of 1 is an empty set, so surely to be
> correct it should return [] when given 1 and not throw an
> exception.
The Task says that the input can't be 1, so the input 1 needs to
be a pre-condition violation:
>Write a function which returns an array or collection which
>contains the prime decomposition of a given number, n, greater
>than 1<
> This also suggests a possible modification to [].reduce!"a * b"
> as mathematically the product of the empty set is defined as 1.
reduce() is a general function, so it's not supposed to know that.
Python reduce does the same:
>>> reduce(lambda a, b: a * b, [])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: reduce() of empty sequence with no initial value
If you want that, then you have to use:
reduce!"a * b"(1, items)
And some time from now:
items.reduce!"a * b"(1)
If we add a product() function to Phobos similar to sum()
(http://d.puremagic.com/issues/show_bug.cgi?id=4725 ) then I
agree that for empty ranges it will need to return the
multiplicative identity element.
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list