1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2026-05-12 09:42:05 +00:00

embeddings:: get_n()

This commit is contained in:
Zeno Rogue
2026-04-25 01:23:25 +02:00
parent 778e5d8899
commit 26ade026ed
13 changed files with 39 additions and 31 deletions
+1 -1
View File
@@ -323,7 +323,7 @@ bool neq(betweenness_type a, betweenness_type b) {
}
void compute_betweenness(bool verify) {
auto N = isize(rogueviz::vdata);
auto N = get_n();
progressbar pb(N, "compute_betweenness");
int errorcount = 0, errorcount2 = 0;
for(int i=0; i<N; i++) {
+1 -4
View File
@@ -3,9 +3,6 @@ namespace dhrg {
ll rtally[MAXDIST];
int redgetally[MAXDIST];
using rogueviz::embeddings::directed_edges;
void tallydiredgesof(int i, int delta, mycell *mc) {
for(auto j: directed_edges[i]) {
whichedgetally[quickdist(mc, vertices[j], 0)] += delta;
@@ -14,7 +11,7 @@ void tallydiredgesof(int i, int delta, mycell *mc) {
void dhrg_ranks() {
int N = isize(rogueviz::vdata);
int N = get_n();
/*
print(hlog, "check tally = ");
for(int j=0; j<MAXDIST; j++)
+3
View File
@@ -41,5 +41,8 @@ void graph_from_rv();
ld loglikopt();
int quickdist(mycell *c1, mycell *c2, int setid=0);
extern ll tally[MAXDIST];
using rogueviz::embeddings::directed_edges;
using rogueviz::embeddings::get_n;
}
#endif
+6 -6
View File
@@ -25,7 +25,7 @@ int lastmoves;
int movearound() {
indenter_finish im("movearound");
int N = isize(rogueviz::vdata);
int N = get_n();
int total = 0;
if(smartmove) for(bool b: tomove) if(b) total++;
if(total == 0) {
@@ -99,7 +99,7 @@ int move_restart() {
int moves = 0;
// int im = 0;
int N = isize(rogueviz::vdata);
int N = get_n();
{progressbar pb(N, "move_restart");
for(int i=0; i<N; i++) {
@@ -175,7 +175,7 @@ void preparegraph() {
indenter_finish im("preparegraph");
using namespace rogueviz;
M = 0;
int N = isize(rogueviz::vdata);
int N = get_n();
vertices.resize(N);
if(1) {
@@ -233,7 +233,7 @@ struct dhrg_embedding : public rogueviz::embeddings::tiled_embedding {
}
void save(fhstream& f) override {
int N = isize(rogueviz::vdata);
int N = get_n();
for(int i=0; i<N; i++) {
string p = get_path(vertices[i]);
if(p == "") p = "X";
@@ -250,7 +250,7 @@ void graph_from_rv() {
memoryInfo();
if(true) {
int N = isize(rogueviz::vdata);
int N = get_n();
vertices.resize(N);
progressbar pb(N, "Translating to cells");
@@ -308,7 +308,7 @@ void load_embedded(const string& s) {
if(s == "-") return graph_from_rv();
if(true) {
int N = isize(rogueviz::vdata);
int N = get_n();
progressbar pb(N, "reading embedding");
vertices.resize(N, NULL);
+4 -4
View File
@@ -20,7 +20,7 @@ void tallyedgesof(int i, int delta, mycell *mc) {
void counttallies() {
using namespace rogueviz;
int N = isize(rogueviz::vdata);
int N = get_n();
{
progressbar pb(N, "Tallying pairs");
@@ -48,7 +48,7 @@ void counttallies() {
}
void destroytallies() {
int N = isize(rogueviz::vdata);
int N = get_n();
progressbar pb(N, "Destroying tallies");
for(int i=0; i<N; i++) add_to_set(vertices[i], -1, 0), pb++;
for(int i=0; i<MAXDIST; i++)
@@ -68,7 +68,7 @@ ld loglik_placement() {
mycell *root = mroot;
ld placement_loglik = 0;
auto seg = getsegment(root,root,0);
int N = isize(rogueviz::vdata);
int N = get_n();
for(int j=0; j<BOXSIZE; j++) {
int qj = seg->qty[j];
if(!qj) continue;
@@ -145,7 +145,7 @@ ld loglik_chosen() {
void writestats() {
indenter_finish im("writestats");
memoryInfo();
int N = isize(rogueviz::vdata);
int N = get_n();
println(hlog, "Vertices by distance (N = ", N, "):");
mycell *root = mroot;
for(int j=0; j<BOXSIZE; j++) {
+1 -1
View File
@@ -83,7 +83,7 @@ void show_likelihood() {
handlePanning(sym, uni);
if(uni == '-' && held_id == -1) {
int N = isize(rogueviz::vdata);
int N = get_n();
for(int i=0; i<N; i++) if(rogueviz::vdata[i].m->base == mouseover)
held_id = i;
return;
+6 -6
View File
@@ -58,7 +58,7 @@ struct landscape_embedding : abstract_embedding {
void landscape_build(int dim) {
rogueviz::embeddings::init_landscape(columns = landscape_dim = dim);
int N = isize(rogueviz::vdata);
int N = get_n();
landscape_weights.resize(N);
if(1) {
progressbar pb(N, "compute landscape");
@@ -73,7 +73,7 @@ void landscape_build(int dim) {
void landscape_output(string shape, ld target_dist, string fname) {
ld max_dist = 0;
int N = isize(rogueviz::vdata);
int N = get_n();
for(int i=0; i<N; i++) {
ld tot = 0;
for(int d=0; d<columns; d++) tot += pow(landscape_weights[i][d], 2);
@@ -121,7 +121,7 @@ struct zdisttable_embedding : disttable_embedding {
void read_disttable(string nodelist_fname, string disttable_fname) {
auto de = make_shared<disttable_embedding> ();
int N = isize(rogueviz::vdata);
int N = get_n();
fhstream g(nodelist_fname, "rt");
vector<int> our_index;
@@ -195,7 +195,7 @@ struct dmercator_embedding : untiled_embedding {
void read_dmercator(string fname, bool only_read = false) {
auto me = make_shared<dmercator_embedding> ();
int N = isize(rogueviz::vdata);
int N = get_n();
me->mcs.resize(N);
@@ -232,7 +232,7 @@ struct euclid_embedding : zdisttable_embedding {
void read_euclid(string fname, int dim) {
auto ee = make_shared<euclid_embedding> ();
int N = isize(rogueviz::vdata);
int N = get_n();
println(hlog, "Open file ", fname);
fhstream g(fname, "rt");
@@ -274,7 +274,7 @@ struct poincare_embedding : zdisttable_embedding {
void read_poincare(string fname, int dim) {
auto pe = make_shared<poincare_embedding>();
int N = isize(rogueviz::vdata);
int N = get_n();
println(hlog, "Open file ", fname);
fhstream g(fname, "rt");
+7 -1
View File
@@ -9,6 +9,12 @@ std::shared_ptr<embedding> current;
vector<vector<int> > directed_edges;
// keep this correct
// note: isize(vdata) may be not correct because of the extra 'legend' nodes
int get_n() {
return isize(directed_edges);
}
rogueviz::edgetype *any;
edgetype *ensure_edge() {
@@ -79,7 +85,7 @@ void write_edgelist(const string &fname) {
}
void force_rvgraph() {
for(auto& v: vdata) if(v.id < isize(directed_edges)) {
for(auto& v: vdata) if(v.id < get_n()) {
auto p = current->as_location(v.id);
v.be(p.first, rgpushxto0(p.second));
}
+1
View File
@@ -87,6 +87,7 @@ std::vector<int> path(int src);
int get_actual(int src);
void prepare_goal(int goal);
int get_n();
int count_directed_edges();
void read_edgelist(const string& fn);
+3 -3
View File
@@ -26,7 +26,7 @@ using logisticfun = std::function<ld(logistic&)>;
// needs cellcoords/rvcoords/origcoords
void build_disttable() {
indenter_finish im("build_disttable");
int N = isize(rogueviz::vdata);
int N = get_n();
vector<int> tab(N, N);
disttable0.clear();
disttable1.clear();
@@ -77,7 +77,7 @@ void build_disttable_approx() {
std::vector<vector<array<ll, 2>>> results(threads);
std::vector<std::thread> v;
int N = isize(rogueviz::vdata);
int N = get_n();
for(int k=0; k<threads; k++)
v.emplace_back([&,k] () {
auto& dt = results[k];
@@ -122,7 +122,7 @@ void build_disttable_approx_undirected() {
std::vector<vector<array<ll, 2>>> results(threads);
std::vector<std::thread> v;
int N = isize(rogueviz::vdata);
int N = get_n();
for(int k=0; k<threads; k++)
v.emplace_back([&,k] () {
auto& dt = results[k];
+1 -1
View File
@@ -7,7 +7,7 @@ namespace embeddings {
void continuous_ranks() {
ld tot_ranks = 0, tot_rby = 0, tot_map = 0, tot_n = 0;
int N = isize(rogueviz::vdata);
int N = get_n();
if(1) {
progressbar pb(N/threads, "continuous ranks");
+4 -4
View File
@@ -17,7 +17,7 @@ vector<int> last_goal;
vector<int> next_stop;
void prepare_pairs() {
int N = isize(rogueviz::vdata);
int N = get_n();
pairs.resize(N);
actual.resize(N);
for(int i=0; i<N; i++) actual[i].clear();
@@ -109,7 +109,7 @@ void route_from(int src, int goal, const vector<ld>& distances_from_goal) {
}
void greedy_routing_to(iddata& d, int goal) {
int N = isize(rogueviz::vdata);
int N = get_n();
vector<ld> distances_from_goal(N);
for(int src=0; src<N; src++)
distances_from_goal[src] = current->distance(goal, src);
@@ -136,7 +136,7 @@ void greedy_routing_to(iddata& d, int goal) {
}
void greedy_routing(iddata& d) {
int N = isize(rogueviz::vdata);
int N = get_n();
for(int goal=0; goal<N; goal++) greedy_routing_to(d, goal);
}
@@ -217,7 +217,7 @@ void full_routing() {
iddata result;
prepare_pairs();
if(1) {
int N = isize(rogueviz::vdata);
int N = get_n();
progressbar pb(N, "greedy routing");
for(int goal=0; goal<N; goal++) {
pb++;
+1
View File
@@ -217,6 +217,7 @@ void vertexdata::be(cell *c, transmatrix at) {
m->isVirtual = false;
if(rv_quality >= 3) virtualRebase(m);
if(rv_quality >= 2) m->store();
for(auto& ei: edges) ei.second->orig = nullptr;
if(rv_quality >= 4) for(auto& ei: edges) redo_extenders(ei.second);
}