From 238702e7dd860af59d22f33cbfe163f28c3beb4e Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sun, 25 May 2025 12:11:34 +0200 Subject: Cleanup --- cpp/examples/solve_h48h3k2.cpp | 5 ++--- cpp/nissy.cpp | 23 +++++++++-------------- cpp/nissy.h | 3 +-- 3 files changed, 12 insertions(+), 19 deletions(-) (limited to 'cpp') diff --git a/cpp/examples/solve_h48h3k2.cpp b/cpp/examples/solve_h48h3k2.cpp index f0d6f2f..2a226ba 100644 --- a/cpp/examples/solve_h48h3k2.cpp +++ b/cpp/examples/solve_h48h3k2.cpp @@ -80,10 +80,9 @@ int main() { if (solve_result.solutions.size() == 0) { std::cout << "No solution found!" << std::endl; } else { - auto& sol = solve_result.solutions[0]; - auto len = nissy::count_moves(sol).value; + auto len = nissy::count_moves(solve_result.solutions).value; std::cout << "Solution (" << len << " moves): " - << sol << std::endl; + << solve_result.solutions << std::endl; } return 0; diff --git a/cpp/nissy.cpp b/cpp/nissy.cpp index ed0dc0f..36fb5f2 100644 --- a/cpp/nissy.cpp +++ b/cpp/nissy.cpp @@ -56,6 +56,7 @@ namespace nissy { namespace size { constexpr size_t CUBE = 24; constexpr size_t TRANSFORMATION = 12; + constexpr size_t SOLVE_STATS = 10; constexpr size_t DATAID = 255; } @@ -163,34 +164,28 @@ namespace nissy { unsigned threads, int (*poll_status)(void *), void *poll_status_data) const { + long long stats[size::SOLVE_STATS]; solver::solve_result result; if (maxsols == 0) { - result.solutions = {}; + result.solutions = ""; result.err = error::OK; return result; } const size_t len = 3 * (maxmoves+1) * maxsols; - std::vector csols(len); + result.solutions.resize(len); auto err = nissy_solve(cube.to_string().c_str(), name.c_str(), niss.value, minmoves, maxmoves, maxsols, optimal, threads, data.size(), reinterpret_cast(data.data()), len, - csols.data(), result.stats.data(), poll_status, - poll_status_data); - result.err = error{err}; + result.solutions.data(), stats, + poll_status, poll_status_data); - if (err < 0) - return result; - - std::string_view strsols(csols.data()); - for (auto r : strsols | std::views::split('\n')) - if (r.begin() != r.end() || - r.begin() == strsols.begin()) - result.solutions.push_back( - std::string{r.begin(), r.end()}); + int size = result.solutions.find_first_of('\0') + 1; + result.solutions.resize(size); + result.err = error{err}; return result; } diff --git a/cpp/nissy.h b/cpp/nissy.h index 884043d..817307c 100644 --- a/cpp/nissy.h +++ b/cpp/nissy.h @@ -79,8 +79,7 @@ namespace nissy { public: struct solve_result { error err; - std::vector solutions; - std::array stats; + std::string solutions; }; const std::string name; -- cgit v1.3