Memoization in compile-time
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Mar 13 11:28:54 PDT 2015
On 03/13/2015 06:51 AM, Dennis Ritchie wrote:
> And you can somehow memoization stuff at compile time?
Scarily simple. :D
import std.stdio;
enum N = 15;
enum int[] factorials = memoizeFactorials(N);
int[] memoizeFactorials(int n)
{
if (!__ctfe) {
// Make sure that this function is never called at run time
assert(false);
}
int[] result = new int[n];
result[0] = 1;
foreach (i; 1 .. n) {
result[i] = result[i - 1] * i;
}
return result;
}
int fact(int n)
{
return factorials[n];
}
void main()
{
foreach (i; 0 .. N) {
writeln(fact(i));
}
}
Ali
More information about the Digitalmars-d-learn
mailing list