I recently submitted a patch (if that isn't enough to get Apple Bottom squealing in sheer excitement then I'm not sure what is) that introduces the ability to search gutter-symmetric soups on apgsearch. Currently implemented are D2_+1 gutters, with a skew of 0, 1 or 2. I don't know how to do diagonal gutters or skewgutters.
Currently there aren't any checks as to whether a searched rule actually preserves the selected gutter symmetry, but I'm not sure if that's a particularly major issue at all anyway since inflated soups aren't restricted to margolus-type rules.
But that said, have fun with these three new symmetries (and here's to finding a natural centinal or something)!
EDIT: HANG ON A SECOND. IT SEEMS TO BE GENERATING THESE SOUPS AS C1 INSTEAD. I don't know what's causing this but the submitted hauls will probably need to be backed out pronto. I swear I had all this completely sorted in the testing phase...
Here's an extract from the old working hashsoup:
Code: Select all
if (symmetry == "D2_xo") { return shift_bitworld(vbw, 0, -15); }
if (symmetry == "D2_+1") { bw += shift_bitworld(vbw, 0, -15); return bw; }
if (symmetry == "D2_+2") { bw += shift_bitworld(vbw, 0, -16); return bw; }
// To do: only allow rules without B2(c,i),4(c,i),6(c,i) for the following as these as these transitions break gutter symmetry
if (symmetry == "D2_+1_gO1s0_MBbeta1") { bw += shift_bitworld(vbw, 0, -17); return bw; }
// To do: figure out the exact transitions that break the following skewgutters
if (symmetry == "D2_+1_gO1s1_MBbeta1") { bw += shift_bitworld(vbw, 1, -17); return bw; }
if (symmetry == "D2_+1_gO1s2_MBbeta1") { bw += shift_bitworld(vbw, 2, -17); return bw; }
bitworld hbw;
and from the working samples.py (does the order have something to do with it?)
Code: Select all
if rulestring[-1].lower() == 'h':
validsyms += ["C2_4", "C2_1", "C3_1", "C6", "D2_x", "D2_xo", "D4_x4", "D4_x1", "D6_1", "D6_1o", "D12"]
else:
validsyms += ["C2_4", "C2_2", "C2_1", "C4_4", "C4_1",
"D2_+2", "D2_+1", "D2_+1_gO1s0_MBbeta1", "D2_+1_gO1s1_MBbeta1", "D2_+1_gO1s2_MBbeta1", "D2_x", "D4_+4", "D4_+2", "D4_+1", "D4_x4", "D4_x1", "D8_4", "D8_1"]
if (re.match('^b0?1?2?3?4?5?6?7?8?s0?1?2?3?4?5?6?7?8?$', rulestring)):