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:
@@ -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++) {
|
||||
|
||||
@@ -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++)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user