华容道高性能计算引擎
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.4 KiB

#include <gtest/gtest.h>
#include <format>
#include <cstdint>
#include <algorithm>
// TODO: only for debug
#include <iostream>
#include "group/group.h"
#include "helper/cases.h"
#include "common_code/common_code.h"
TEST(GroupUnion, demo) {
// for (auto i = 0; i < block_nums().size(); ++i) {
// std::cout << block_nums()[i].n_2x1 + block_nums()[i].n_1x2 << ", ";
// std::cout << block_nums()[i].n_2x1 << ", ";
// std::cout << block_nums()[i].n_1x1 << std::endl;
// }
std::vector<std::vector<uint64_t>> pp;
pp.resize(block_nums().size());
for (uint64_t head = 0; head < 16; ++head) {
for (auto range : AllCases::instance().fetch()[head]) {
uint64_t common_code = head << 32 | range;
auto type_id = to_type_id(cal_block_num(common_code));
pp[type_id].emplace_back(common_code);
}
}
for (uint32_t type_id = 0; type_id < klotski::cases::TYPE_ID_LIMIT; ++type_id) {
auto cases = klotski::cases::GroupUnion::unsafe_create(type_id).cases();
std::vector<uint64_t> extend {};
for (uint64_t head = 0; head < 16; ++head) {
for (auto range : cases[head]) {
extend.emplace_back(head << 32 | range);
}
}
std::cout << "type_id " << type_id << " -> " << extend.size() << std::endl;
EXPECT_EQ(extend, pp[type_id]);
}
}