Download or view hyperoperation.frink in plain text format
/** This implements the hyperoperation function, which is a generalization of
several mathematical operators:
* n = 0 : the unary successor function (returns b+1; a is ignored)
* n = 1 : addition (a + b) (a+1+1+1+1... b times)
* n = 2 : multiplication (a * b) (a+a+a+a... b times)
* n = 3 : exponentiation (a^b) (a*a*a*a... b times)
* n = 4 : tetration (a^a^a^a ... b times)
* etc
See:
https://en.m.wikipedia.org/wiki/Hyperoperation
*/
/** Optimized version of hyperoperations. */
hyper[n, a, b] :=
{
println["hyper[$n, $a, $b]"]
if n == 0
return b+1
if n == 1
return a + b
if n == 2
return a * b
if b == 0
return 1
if n == 3
return a^b
return hyper[n-1, a, hyper[n, a, b-1]]
}
Download or view hyperoperation.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20199 days, 8 hours, 57 minutes ago.