# 21 Feb 2013 # BEAROFF # c9.txt # Move rightwards along list bearing off according to backgammon rules! LegalMoves := proc(a,b,i): if i = 1 then: if a > 0 and b > 0 then: return {[a-1, b+1], [a, b-1]}: elif a = 0 and b > 0 then: return {[a, b-1]}: elif a > 0 and b = 0 then: return {[a-1, b+1]}: else: return {}: fi: fi: if i = 2 then: if a > 0 then: return {[a-1, b]}: elif a = 0 and b > 0 then: return {[a, b-1]}: else: return {}: fi: fi: end: BestMove := proc(a,b,i): return (map(x->x[1], sort(map(x->[x, WinningTime(op(x))], LegalMoves(a,b,i)), (x,y)->x[2]