diff --git a/src/core/benchmark/group.cc b/src/core/benchmark/group.cc index e731e9b..ed2c539 100644 --- a/src/core/benchmark/group.cc +++ b/src/core/benchmark/group.cc @@ -22,6 +22,8 @@ using klotski::group::GroupUnion; using klotski::codec::RawCode; using klotski::codec::CommonCode; +using klotski::group::TYPE_ID_LIMIT; + /// Build all valid CommonCodes. static std::vector all_common_codes() { std::vector codes; @@ -114,13 +116,42 @@ static void GroupExtend(benchmark::State &state) { // auto src = klotski::codec::RawCode::from_common_code(0x1A9BF0C00).value(); - // const auto group = Group::unsafe_create(169, 0, Group::Toward::C); - // const auto group = Group::create(5, 0, Group::Toward::A).value(); - const auto group = Group::create(186, 0, Group::Toward::A).value(); + // constexpr auto group = Group::unsafe_create(169, 0, Group::Toward::C); // Horizontal (5.33ms) + // constexpr auto group = Group::unsafe_create(5, 0, Group::Toward::A); // Full (8.27ms) + // constexpr auto group = Group::create(182, 0, Group::Toward::A).value(); // Vertical + // const auto group = Group::create(186, 0, Group::Toward::A).value(); + + // std::cout << (int)group.mirror_type() << std::endl; + + // std::vector groups; + // groups.reserve(25422); + // for (int type_id = 0; type_id < 203; ++type_id) { + // for (auto group : GroupUnion::unsafe_create(type_id).groups()) { + // groups.emplace_back(group); + // } + // } for (auto _ : state) { - volatile auto tmp = group.cases(); + + for (int type_id = 0; type_id < TYPE_ID_LIMIT; ++type_id) { + for (auto group : GroupUnion::unsafe_create(type_id).groups()) { + // if (group.mirror_type() == Group::MirrorType::Full) { + // if (group.mirror_type() == Group::MirrorType::Horizontal) { + // if (group.mirror_type() == Group::MirrorType::Centro) { + // if (group.mirror_type() == Group::MirrorType::Vertical) { + if (group.mirror_type() == Group::MirrorType::Ordinary) { + // std::println("{} ({})", group.to_string(), group.size()); + volatile auto kk = group.cases(); + } + } + } + + // for (auto group : groups) { + // volatile auto tmp = group.cases(); + // } + + // volatile auto tmp = group.cases(); // volatile auto ret = klotski::group::Group_extend(src, 0); diff --git a/src/core/group/internal/group.cc b/src/core/group/internal/group.cc index 95a7aba..ed59395 100644 --- a/src/core/group/internal/group.cc +++ b/src/core/group/internal/group.cc @@ -51,7 +51,7 @@ KLSK_NOINLINE static RangesUnion group_extend(RawCode seed, const size_t reserve core.next_cases(curr, cases.find(curr)->second); } - std::cout << std::format("[{}, {}, {}]\n", codes.size(), mirrors.size(), cases.size()); + // std::cout << std::format("[{}, {}, {}]\n", codes.size(), mirrors.size(), cases.size()); // std::cout << std::format("{:.5f}\n", static_cast(codes.size()) / reserve); @@ -108,7 +108,7 @@ static RangesUnion extend_type_x(RawCode seed, size_t reserve) { RangesUnion Group::cases() const { if (const auto gu = GroupUnion::unsafe_create(type_id()); gu.group_num() == 1) { - std::cout << "[]" << std::endl; + // std::cout << "[]" << std::endl; return gu.cases(); } diff --git a/src/core/main.cc b/src/core/main.cc index 51e2597..f5ec427 100644 --- a/src/core/main.cc +++ b/src/core/main.cc @@ -58,20 +58,28 @@ int main() { // auto kk = group.cases(); // std::cout << kk.size() << std::endl; + // constexpr auto group = Group::create(89, 0, Group::Toward::A).value(); + // std::println("{}: {}", group.to_string(), group.size()); + // volatile auto kk = group.cases(); + + // constexpr auto group_union = GroupUnion::unsafe_create(89); + // std::println("{}: {}", group_union.unwrap(), group_union.size()); + // volatile auto pp = group_union.cases(); + + // for (auto kk : group_union.groups()) { + // std::println("{}: {}", kk.to_string(), kk.size()); + // } + for (int type_id = 0; type_id < TYPE_ID_LIMIT; ++type_id) { for (auto group : GroupUnion::unsafe_create(type_id).groups()) { - // if (group.is_horizontal_mirror()) { - // if (group.is_vertical_mirror()) { - // if (group.mirror_type() == Group::MirrorType::Horizontal) { - // if (group.mirror_type() == Group::MirrorType::Vertical) { - // if (group.mirror_type() == Group::MirrorType::Centro) { // if (group.mirror_type() == Group::MirrorType::Full) { + if (group.mirror_type() == Group::MirrorType::Horizontal) { + // if (group.mirror_type() == Group::MirrorType::Centro) { + // if (group.mirror_type() == Group::MirrorType::Vertical) { // if (group.mirror_type() == Group::MirrorType::Ordinary) { - // std::cout << std::format("{} ({})\n", group.to_string(), group.size()); - std::cout << std::format("{}: ", group.to_string()); + // std::println("{} ({})", group.to_string(), group.size()); volatile auto kk = group.cases(); - // std::cout << group.size() << std::endl; - // } + } } }