Sandbox

# Reduce over the range [1..n] [FINALIZED]

+7
−0

I often need to find the factorial of a number or the sum of all numbers up to a number when cheating on math tests. To help me with this, your task is to write $F$, a generalized version of those functions:

$$F(n) = 1 * 2 * \space ... \space * (n-1) * n$$

Please note that the operator $*$ does not necessarily represent multiplication here, but stands for a commutative, associative operator that will be an input to your program/function. This means that $a * b$ is the same as $b * a$, and $a * (b * c)$ is the same as $(a * b) * c$. Its inputs are positive integers, and its outputs are integers.

# Rules

• $n$ will be a positive integer.
• $*$ is a binary function/operator that can be taken in any convenient format, including but not limited to:
• A function object
• A function pointer
• An object with a method with a specific name (e.g. Java's BiFunction)
• A string that can be evaluated to get a function
• $*$ is a blackbox function. That means that you will not be able to examine it to see how it works; all you can do is feed it two positive integers and get an integer back.
• The output of your function will be an integer (not necessarily positive).
• This is code golf, so shortest code in bytes wins!

# Testcases

f         | n  | F(f, n)
Multiply  | 1  | 1
Multiply  | 5  | 120
XOR       | 1  | 1
XOR       | 2  | 3
XOR       | 5  | 1
XOR       | 10 | 11


Questions:

• Interesting enough? Is a vanilla factorial better?
• Are the tags okay?
• Needs more testcases?
• Input rules okay?
Why does this post require moderator attention?