Hacker News new | past | comments | ask | show | jobs | submit login

Algebraic solutions are fascinating. I was hooked on Sage for a week or two solving similar problems. I solved this one using brute force though:

    array<array<int, 6>, 6> tumblers
      = {{{39, 90, 75, 88, 15, 57}, {9,   2, 58, 68, 48, 64},
          {29, 55, 16, 67,  8, 91}, {40, 54, 66, 22, 32, 25},
          {49,  1, 17, 41, 14, 30}, {44, 63, 10, 83, 46,  3}}};

    template <typename It> bool
    solve (It tumbler, It end, int const sum) {
        if (tumbler == end)
            return (sum == 0);
        for (auto const pin: *tumbler) {
            if (solve (next(tumbler), end, sum - pin)) {
                std::cout << pin << std::endl;
                return true;
            }
        }
        return false;
    }

    int main() {
        solve (tumblers.rbegin(), tumblers.rend(), 419);
    }



Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: