Files
toddcox-visualize/tc/bench/named.cpp
David Allemang 47de177626 Improve tc::Group, tc::Cosets API.
This is a combination of many commits:

---------------------------------------------------------------------------

final. add public/private for core classes.

wip - big cleanup cosets.

index<>, cosets<>, and group<> all defined

transparent <void> overrides that operate directly on indices, not names

inheritance hierarchy means one can drop or change generator names

still missing path support.

wip - named cosets

fix lang test

wip - named generators

Move Group docstring away from specialization.

Remove tc::Gen; use Group<void>

remove tc::Rel

add thousands separators for benchmark limits

add generators list to tc::group

remove pair_map
2022-11-19 12:32:37 -05:00

56 lines
1.1 KiB
C++

#include <string>
#include <vector>
#include <fmt/core.h>
#include <fmt/ranges.h>
#include <tc/core.hpp>
template<typename G>
void show(G const &g) { // todo add formatter for groups, cosets.
fmt::print(" | ");
for (const auto &v: g.gens()) {
fmt::print("{} ", v);
}
fmt::print("\n");
for (const auto &u: g.gens()) {
fmt::print("{} | ", u);
for (const auto &v: g.gens()) {
fmt::print("{} ", g.get(u, v));
}
fmt::print("\n");
}
}
int main() {
tc::Group<char> group(4, {'r', 'g', 'b', 'y'});
group.set('r', 'g', 5);
group.set('g', 'b', 4);
group.set('b', 'y', 3);
show(group);
auto sub = group.sub({'r', 'g', 'y'});
show(sub);
auto res = sub.solve({});
fmt::print("res order: {}\n", res.order());
auto cos = sub.solve({'r', 'y'});
fmt::print("order: {}\n", cos.order());
// tc::Group<u_int8_t> group(4, {0, 1, 2, 3});
//
// group.set(0, 1, 5);
// group.set(1, 2, 4);
// group.set(2, 3, 3);
//
// show(group);
//
// auto sub = group.sub({3, 2, 0, 1});
// show(sub);
}