On Monday, 25 May 2015 at 17:52:09 UTC, Dennis Ritchie wrote:
But why is the solution breaks down when `s = 10000` ? :)

import std.stdio, std.algorithm, std.range;

int c;
const x = 12, y = 65, z = 50, s = 100000;

Which is it, now? 4 or 5 zeros?

void solve(Range)(Range r) {
cartesianProduct(r, r, r).filter!(i => i[0] * (y + 3 * z) + i[1] * (y + 2 * z) + i[2] * (y + z) == s).each!dout;
}

void main() {

    auto a = iota(0, x + 1).array;

    solve(a);

    writefln(`%s total`, c);
}

void dout(Tuple)(Tuple idx) {
    ++c;
}
-----
http://rextester.com/XGDL26042

What do you mean it "breaks down"? Your original code doesn't print anything for s = 10_000 or s = 100_000, either.

Reply via email to