; Amber Nelson ; Rules: 34 ;SWITCH BEGINNING 0 _ 1 r halt ;empty string accepted 0 0 a r R1 ;see 0, switch it to a, GO RIGHT and SWITCH END 0 1 b r R1 ;see 1, switch it to b, GO RIGHT and SWITCH END 0 * * r 0 ;see a or b, keep it as a or b, keep going 0 x x l L2 ;see x, done replacing, go to start 0 y y l L2 ;see y, done replacing, go to start ;SWITCH END 1 0 x l L1 ;see 0, switch it to x, GO LEFT and SWITCH BEGINNING 1 1 y l L1 ;see 1, switch it to y, GO LEFT and SWITCH BEGINNING 1 * * l 1 ;see x or y, keep it as x or y, keep going 1 b 0 l R2 ;see b, odd string size, FAIL 1 a 0 l R2 ;see a, odd string size, FAIL ;GO RIGHT and SWITCH END R1 _ _ l 1 ;reach end, backtrack one R1 * * r R1 ;not end, keep going ;GO LEFT and SWITCH BEGINNING L1 _ _ r 0 ;reach beginning, backtrack one L1 * * l L1 ;not beginning, keep going ;GO LEFT 2 L2 _ _ r C ;reach beginning, start comparison L2 * * l L2 ;not beginning, keep going ;GO RIGHT 2 R2 _ _ l E2 ;reach end, erase R2 * * r R2 ;not end, keep going ;COMPARE C b ^ r B ;see b, go to look for y C ^ ^ r C ;see ^, keep searching C a ^ r A ;see a, go to look for x C _ 1 l E ;reached end, done comparing ;A A y 0 l R2 ;see y, FAIL, go to erase A x ^ l L2 ;see x, replace it with ^, keep searching A * * r A ;anything else, keep searching ;B B x 0 l R2 ;see x, FAIL, go to erase B y ^ l L2 ;see y, replace it with ^, keep searching B * * r B ;anything else, keep searching ;EMPTY E * _ l E ;erase E _ _ r halt ;done erasing, HALT E2 * _ l E2 ;erase E2 0 0 l E2 ;see a 0, leave it E2 _ _ r halt ;done erasing, HALT