aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/cube_transform_with_switch.h6
-rw-r--r--src/solve_h48.h27
-rw-r--r--tools/gendata_h48/gendata_h48.c2
3 files changed, 10 insertions, 25 deletions
diff --git a/src/cube_transform_with_switch.h b/src/cube_transform_with_switch.h
index 18c1c8c..d3a108c 100644
--- a/src/cube_transform_with_switch.h
+++ b/src/cube_transform_with_switch.h
@@ -22,7 +22,7 @@ transform_edges(cube_t c, uint8_t t)
22{ 22{
23 switch (t) { 23 switch (t) {
24 case _trans_UFr: 24 case _trans_UFr:
25 return _trans_edges_rotation(UFr, c); 25 return c;
26 case _trans_ULr: 26 case _trans_ULr:
27 return _trans_edges_rotation(ULr, c); 27 return _trans_edges_rotation(ULr, c);
28 case _trans_UBr: 28 case _trans_UBr:
@@ -128,7 +128,7 @@ transform_corners(cube_t c, uint8_t t)
128{ 128{
129 switch (t) { 129 switch (t) {
130 case _trans_UFr: 130 case _trans_UFr:
131 return _trans_corners_rotation(UFr, c); 131 return c;
132 case _trans_ULr: 132 case _trans_ULr:
133 return _trans_corners_rotation(ULr, c); 133 return _trans_corners_rotation(ULr, c);
134 case _trans_UBr: 134 case _trans_UBr:
@@ -234,7 +234,7 @@ transform(cube_t c, uint8_t t)
234{ 234{
235 switch (t) { 235 switch (t) {
236 case _trans_UFr: 236 case _trans_UFr:
237 return _trans_rotation(UFr, c); 237 return c;
238 case _trans_ULr: 238 case _trans_ULr:
239 return _trans_rotation(ULr, c); 239 return _trans_rotation(ULr, c);
240 case _trans_UBr: 240 case _trans_UBr:
diff --git a/src/solve_h48.h b/src/solve_h48.h
index ad865a7..1701268 100644
--- a/src/solve_h48.h
+++ b/src/solve_h48.h
@@ -35,13 +35,14 @@ _t by _ttrep).
35#define _foreach_h48sim(_cube, _cocsepdata, _selfsim, _h, _action) \ 35#define _foreach_h48sim(_cube, _cocsepdata, _selfsim, _h, _action) \
36 int64_t _cocsep = coord_cocsep(_cube); \ 36 int64_t _cocsep = coord_cocsep(_cube); \
37 uint8_t _ttrep = TTREP(_cocsepdata[_cocsep]); \ 37 uint8_t _ttrep = TTREP(_cocsepdata[_cocsep]); \
38 uint8_t _inverse_ttrep = inverse_trans(_ttrep); \
38 int64_t _coclass = COCLASS(_cocsepdata[_cocsep]); \ 39 int64_t _coclass = COCLASS(_cocsepdata[_cocsep]); \
39 cube_t _rep = transform(_cube, _ttrep); \ 40 cube_t _rep = transform(_cube, _ttrep); \
40 uint64_t _sim = _selfsim[_coclass]; \ 41 uint64_t _sim = _selfsim[_coclass]; \
41 for (uint8_t _t = 0; _t < 48 && _sim; _t++, _sim >>= 1) { \ 42 for (uint8_t _t = 0; _t < 48 && _sim; _t++, _sim >>= 1) { \
42 if (!(_sim & 1)) continue; \ 43 if (!(_sim & 1)) continue; \
43 _cube = transform(_rep, _t); \ 44 _cube = transform(_rep, _t); \
44 _cube = transform(_cube, inverse_trans(_ttrep)); \ 45 _cube = transform(_cube, _inverse_ttrep); \
45 _action \ 46 _action \
46 } 47 }
47 48
@@ -512,7 +513,9 @@ gendata_h48h0k4_return_size:
512_static int64_t 513_static int64_t
513gendata_h48h0k4_bfs(bfsarg_esep_t *arg) 514gendata_h48h0k4_bfs(bfsarg_esep_t *arg)
514{ 515{
515 if (2 * arg->done < (int64_t)ESEP_MAX(0)) 516 const uint8_t breakpoint = 10; /* Hand-picked optimal */
517
518 if (arg->depth < breakpoint)
516 return gendata_h48h0k4_bfs_fromdone(arg); 519 return gendata_h48h0k4_bfs_fromdone(arg);
517 else 520 else
518 return gendata_h48h0k4_bfs_fromnew(arg); 521 return gendata_h48h0k4_bfs_fromnew(arg);
@@ -567,31 +570,13 @@ gendata_h48h0k4_bfs_fromnew(bfsarg_esep_t *arg)
567 x = get_esep_pval(arg->buf32, j); 570 x = get_esep_pval(arg->buf32, j);
568 if (x >= arg->depth) 571 if (x >= arg->depth)
569 continue; 572 continue;
570#if 0
571 cube_t transd;
572 int64_t t, cocsep_coord, sim;
573
574 set_esep_pval(arg->buf32, i, arg->depth);
575 cc++;
576 cocsep_coord = i / H48_ESIZE(0);
577 sim = arg->selfsim[cocsep_coord] >> 1;
578 for (t = 1; t < 48 && sim; t++) {
579 transd = transform(cube, t);
580 j = coord_h48(transd, arg->cocsepdata, 0);
581 x = get_esep_pval(arg->buf32, j);
582 set_esep_pval(arg->buf32, j, arg->depth);
583 cc += x == 0xF;
584 }
585#else
586 _foreach_h48sim(cube, arg->cocsepdata, arg->selfsim, 0, 573 _foreach_h48sim(cube, arg->cocsepdata, arg->selfsim, 0,
587 j = coord_h48(cube, arg->cocsepdata, 0); 574 j = coord_h48(cube, arg->cocsepdata, 0);
588 x = get_esep_pval(arg->buf32, j); 575 x = get_esep_pval(arg->buf32, j);
589 set_esep_pval(arg->buf32, j, arg->depth); 576 set_esep_pval(arg->buf32, j, arg->depth);
590 cc += x == 0xF; 577 cc += x == 0xF;
591 ) 578 )
592#endif 579 break; /* Enough to find one, skip the rest */
593
594 break;
595 } 580 }
596 } 581 }
597 582
diff --git a/tools/gendata_h48/gendata_h48.c b/tools/gendata_h48/gendata_h48.c
index c8a6d12..3f314aa 100644
--- a/tools/gendata_h48/gendata_h48.c
+++ b/tools/gendata_h48/gendata_h48.c
@@ -23,7 +23,7 @@ void run(void) {
23 } else { 23 } else {
24 printf("Succesfully generated %" PRId64 " bytes. Table:\n", s); 24 printf("Succesfully generated %" PRId64 " bytes. Table:\n", s);
25 h48info = (uint32_t *)buf + (ETABLESIZE(HVALUE) + COCSEPSIZE) / 4; 25 h48info = (uint32_t *)buf + (ETABLESIZE(HVALUE) + COCSEPSIZE) / 4;
26 for (i = 0; i < MAXDEPTH+1; i++) 26 for (i = 0; i < MAXDEPTH+1 && h48info[i+1]; i++)
27 printf("%d:\t%" PRIu32 "\n", i, h48info[i+1]); 27 printf("%d:\t%" PRIu32 "\n", i, h48info[i+1]);
28 } 28 }
29} 29}

Generated with cgit - Back to sebastiano.tronto.net