Start with the sequence of coins as follows (where you can think of O as TAILS and X as HEADS; there are 14 tails and 15 heads)
XOXOXOXOXOXOXOXOXOXOXOXOXOXOX
Transform it to
XXXXXXXXXXXXXXXOOOOOOOOOOOOOO
using moves of the following sort:
Take two consecutive coins and move them to the end, or the beginning.
Arrowheads show the direction the chosen pair is to go, for the sequence that follows each:
xoxoxoxoxoxoxoxoxoxoxoxoxoxox
>>
xoxoxoxoxoxoxoxoxoxoxoxoxoxxo
<<
xxxoxoxoxoxoxoxoxoxoxoxoxoxoo
>>
xxxoxoxoxoxoxoxoxoxoxoxoxooxo
>>
xxxoxoxoxoxoxoxoxoxoxoxoxxooo
>>
xxxoxoxoxoxoxoxoxoxoxoxxoooxo
<<
xxxxxoxoxoxoxoxoxoxoxoxooooxo
>>
xxxxxoxoxoxoxoxoxoxoxoxooxooo
>>
xxxxxoxoxoxoxoxoxoxoxoxxooooo
>>
xxxxxoxoxoxoxoxoxoxoxxoooooxo
<<
xxxxxxxoxoxoxoxoxoxoxooooooxo
>>
xxxxxxxoxoxoxoxoxoxoxooooxooo
>>
xxxxxxxoxoxoxoxoxoxoxooxooooo
>>
xxxxxxxoxoxoxoxoxoxoxxooooooo
>>
xxxxxxxoxoxoxoxoxoxxoooooooxo
<<
xxxxxxxxxoxoxoxoxoxooooooooxo
>>
xxxxxxxxxoxoxoxoxoxooooooxooo
>>
xxxxxxxxxoxoxoxoxoxooooxooooo
>>
xxxxxxxxxoxoxoxoxoxooxooooooo
>>
xxxxxxxxxoxoxoxoxoxxooooooooo
>>
xxxxxxxxxoxoxoxoxxoooooooooxo
<<
xxxxxxxxxxxoxoxoxooooooooooxo
>>
xxxxxxxxxxxoxoxoxooooooooxooo
>>
xxxxxxxxxxxoxoxoxooooooxooooo
>>
xxxxxxxxxxxoxoxoxooooxooooooo
>>
xxxxxxxxxxxoxoxoxooxooooooooo
>>
xxxxxxxxxxxoxoxoxxooooooooooo
>>
xxxxxxxxxxxoxoxxoooooooooooxo
<<
xxxxxxxxxxxxxoxooooooooooooxo
>>
xxxxxxxxxxxxxoxooooooooooxooo
>>
xxxxxxxxxxxxxoxooooooooxooooo
>>
xxxxxxxxxxxxxoxooooooxooooooo
>>
xxxxxxxxxxxxxoxooooxooooooooo
>>
xxxxxxxxxxxxxoxooxooooooooooo
>>
xxxxxxxxxxxxxoxxooooooooooooo
<<
xxxxxxxxxxxxxxxoooooooooooooo
The strategy is:
If any xx pairs exist after the first o (any o, even single) bring them to the front, repeating this until no more such exist.
Then, if any oo pairs exist with at least one x after that pair, bring it to the end, repeating this until no more such exist.
If any xo pairs exist after the first o, move it to the end.
Keep repeating the above three steps until completed.
The program that follows this strategy and produced the results above is:
CLS
FOR i = 1 TO 14
s$ = s$ + "xo"
NEXT
s$ = s$ + "x"
PRINT s$
OPEN "slidcoin.txt" FOR OUTPUT AS #2
PRINT #2, s$
DO
DO
ixo = INSTR(s$, "o")
ix = INSTR(ixo, s$, "xx")
IF ix > 0 THEN
s$ = "xx" + MID$(s$, 1, ix - 1) + MID$(s$, ix + 2)
PRINT SPACE$(ix - 1) + "<<"
PRINT s$
PRINT #2, SPACE$(ix - 1) + "<<"
PRINT #2, s$
END IF
LOOP UNTIL ix = 0
DO
ix = INSTR(s$, "oo")
done = 0
IF ix > 0 THEN
IF INSTR(ix, s$, "x") THEN
s$ = LEFT$(s$, ix - 1) + MID$(s$, ix + 2) + "oo"
PRINT SPACE$(ix - 1) + ">>"
PRINT s$
PRINT #2, SPACE$(ix - 1) + ">>"
PRINT #2, s$
done = 1
END IF
END IF
LOOP UNTIL done = 0
ixo = INSTR(s$, "o")
ix = INSTR(ixo, s$, "xo")
IF ix > 0 THEN
IF MID$(s$, ix - 1, 1) <> "x" THEN
s$ = LEFT$(s$, ix - 1) + MID$(s$, ix + 2) + "xo"
PRINT SPACE$(ix - 1) + ">>"
PRINT s$
PRINT #2, SPACE$(ix - 1) + ">>"
PRINT #2, s$
END IF
END IF
LOOP UNTIL INSTR(s$, "o") = 16
CLOSE
|
Posted by Charlie
on 2013-06-19 14:02:06 |