@@ -35,19 +35,19 @@ using namespace std;
3535using Clock = chrono::high_resolution_clock;
3636#endif
3737
38- vector<vector<unsigned int >> make_edgelist (vector<unsigned int > let_counts,
39- unsigned int nletsm1, size_t alphlen) {
38+ vector<vector<unsigned long >> make_edgelist (vector<unsigned long > let_counts,
39+ unsigned long nletsm1, size_t alphlen) {
4040
4141 /* 1D vector<int> --> 2D vector<vector<int>>
4242 * The first layer elements are vertices, second layer are the edges.
4343 */
4444
4545 /* TODO: find a cheaper alternative */
4646
47- vector<vector<unsigned int >> edgelist (nletsm1, vector<unsigned int >(alphlen));
48- unsigned int counter{0 };
47+ vector<vector<unsigned long >> edgelist (nletsm1, vector<unsigned long >(alphlen));
48+ unsigned long counter{0 };
4949
50- for (unsigned int i = 0 ; i < nletsm1; ++i) {
50+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
5151
5252 for (size_t j = 0 ; j < alphlen; ++j) {
5353 edgelist[i][j] = let_counts[counter];
@@ -60,16 +60,16 @@ vector<vector<unsigned int>> make_edgelist(vector<unsigned int> let_counts,
6060
6161}
6262
63- vector<unsigned int > find_euler (vector<vector<unsigned int >> edgelist, unsigned int lasti ,
64- unsigned int nletsm1, default_random_engine gen, size_t alphlen, unsigned int k ,
65- vector<bool > empty_vertices, bool verbose) {
63+ vector<unsigned long > find_euler (vector<vector<unsigned long >> edgelist,
64+ unsigned long lasti, unsigned long nletsm1, default_random_engine gen ,
65+ size_t alphlen, unsigned int k, vector<bool > empty_vertices, bool verbose) {
6666
67- unsigned int u;
68- unsigned int nletsm2 = pow (alphlen, k - 2 );
69- unsigned int good_v{0 }, counter{0 };
67+ unsigned long u;
68+ unsigned long nletsm2 = pow (alphlen, k - 2 );
69+ unsigned long good_v{0 }, counter{0 };
7070 vector<bool > vertices (nletsm1, false );
71- vector<unsigned int > last_letsi (nletsm1, 0 );
72- vector<unsigned int > next_let_i;
71+ vector<unsigned long > last_letsi (nletsm1, 0 );
72+ vector<unsigned long > next_let_i;
7373 next_let_i.reserve (nletsm1);
7474
7575 /* The idea is to go through and make sure that every last letter for each
@@ -83,26 +83,26 @@ vector<unsigned int> find_euler(vector<vector<unsigned int>> edgelist, unsigned
8383 vertices[lasti] = true ; /* tree root */
8484
8585 /* I don't think there's a formula for this, so just prepare these beforehand */
86- for (unsigned int i = 0 ; i < nletsm1; ++i) {
86+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
8787 next_let_i.push_back (counter * alphlen);
8888 if (counter == nletsm2 - 1 ) counter = 0 ;
8989 else ++counter;
9090 }
9191
92- for (unsigned int i = 0 ; i < nletsm1; ++i) {
92+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
9393 if (empty_vertices[i]) vertices[i] = true ; /* ignore unconnected vertices */
9494 else ++good_v;
9595 }
9696
9797 if (verbose) cerr << " Total vertices to travel: " << good_v << endl;
9898
99- for (unsigned int i = 0 ; i < nletsm1; ++i) {
99+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
100100
101101 u = i;
102102
103103 while (!vertices[u]) {
104104 /* pick a random possible edge from the vertex */
105- discrete_distribution<unsigned int > next_let (edgelist[u].begin (), edgelist[u].end ());
105+ discrete_distribution<unsigned long > next_let (edgelist[u].begin (), edgelist[u].end ());
106106 last_letsi[u] = next_let (gen);
107107 /* now follow the edge to the next vertex */
108108 if (k == 2 )
@@ -130,20 +130,20 @@ vector<unsigned int> find_euler(vector<vector<unsigned int>> edgelist, unsigned
130130
131131}
132132
133- vector<vector<unsigned int >> fill_vertices (vector<vector<unsigned int >> edgelist,
134- vector<unsigned int > last_letsi, unsigned int nletsm1, size_t alphlen,
135- unsigned int lasti, default_random_engine gen, vector<bool > empty_vertices) {
133+ vector<vector<unsigned long >> fill_vertices (vector<vector<unsigned long >> edgelist,
134+ vector<unsigned long > last_letsi, unsigned long nletsm1, size_t alphlen,
135+ unsigned long lasti, default_random_engine gen, vector<bool > empty_vertices) {
136136
137137 /* The incoming edgelist is just a set of counts for each letter. This
138138 * will actually create vectors of letter indices based on counts.
139139 */
140140
141141 /* TODO: find a cheaper alternative */
142142
143- vector<vector<unsigned int >> edgelist2 (nletsm1);
144- unsigned int b;
143+ vector<vector<unsigned long >> edgelist2 (nletsm1);
144+ unsigned long b;
145145
146- for (unsigned int i = 0 ; i < nletsm1; ++i) {
146+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
147147
148148 if (empty_vertices[i]) continue ;
149149
@@ -152,7 +152,7 @@ vector<vector<unsigned int>> fill_vertices(vector<vector<unsigned int>> edgelist
152152 for (size_t j = 0 ; j < alphlen; ++j) {
153153
154154 b = edgelist[i][j];
155- for (unsigned int h = 0 ; h < b; ++h) {
155+ for (unsigned long h = 0 ; h < b; ++h) {
156156 edgelist2[i].push_back (j);
157157 }
158158
@@ -169,15 +169,15 @@ vector<vector<unsigned int>> fill_vertices(vector<vector<unsigned int>> edgelist
169169
170170}
171171
172- vector<unsigned int > walk_euler (vector<vector<unsigned int >> edgelist,
172+ vector<unsigned long > walk_euler (vector<vector<unsigned long >> edgelist,
173173 size_t seqlen, vector<char > lets_uniq, string firstl) {
174174
175175 size_t alphlen = lets_uniq.size ();
176176 size_t nletsm1 = edgelist.size ();
177- unsigned int current{0 };
177+ unsigned long current{0 };
178178 size_t n = firstl.length ();
179- vector<unsigned int > edgelist_counter (nletsm1, 0 );
180- vector<unsigned int > out_i;
179+ vector<unsigned long > edgelist_counter (nletsm1, 0 );
180+ vector<unsigned long > out_i;
181181 out_i.reserve (seqlen);
182182
183183 /* initialize shuffled sequence with starting vertex */
@@ -219,14 +219,14 @@ string shuffle_euler(vector<char> letters, default_random_engine gen, unsigned i
219219 #endif
220220
221221 size_t seqlen = letters.size ();
222- unsigned int nlets, nletsm1;
222+ unsigned long nlets, nletsm1;
223223 size_t alphlen;
224- unsigned int lasti{0 };
225- vector<unsigned int > last_letsi, out_i;
226- vector<unsigned int > let_counts;
224+ unsigned long lasti{0 };
225+ vector<unsigned long > last_letsi, out_i;
226+ vector<unsigned long > let_counts;
227227 vector<char > lets_uniq;
228228 set<unsigned int > lets_set;
229- vector<vector<unsigned int >> edgelist;
229+ vector<vector<unsigned long >> edgelist;
230230 string firstl, out;
231231
232232 /* the first and last letters remain unchanged; these are special vertices
@@ -275,7 +275,7 @@ string shuffle_euler(vector<char> letters, default_random_engine gen, unsigned i
275275 */
276276 vector<bool > empty_vertices;
277277 empty_vertices.reserve (nletsm1);
278- for (unsigned int i = 0 ; i < nletsm1; ++i) {
278+ for (unsigned long i = 0 ; i < nletsm1; ++i) {
279279 empty_vertices.push_back (true );
280280 for (size_t j = 0 ; j < alphlen; ++j) {
281281 if (edgelist[i][j] > 0 ) {
@@ -303,7 +303,7 @@ string shuffle_euler(vector<char> letters, default_random_engine gen, unsigned i
303303 #endif
304304
305305 /* delete last edges from edge pool */
306- vector<vector<unsigned int >> edgelist2;
306+ vector<vector<unsigned long >> edgelist2;
307307 for (size_t i = 0 ; i < last_letsi.size (); ++i) {
308308 if (i != lasti) --edgelist[i][last_letsi[i]];
309309 }
0 commit comments