fork(1) download
  1. start([r,r,r,r,e,b,b,b,b]).
  2.  
  3. move(P1,P2):- append(A,[r,e|B],P1), append(A,[e,r|B],P2).
  4. move(P1,P2):- append(A,[e,b|B],P1), append(A,[b,e|B],P2).
  5. move(P1,P2):- append(A,[e,r,b|B],P1), append(A,[b,r,e|B],P2).
  6. move(P1,P2):- append(A,[r,b,e|B],P1), append(A,[e,b,r|B],P2).
  7.  
  8. solved([b,b,b,b,e,r,r,r,r]).
  9.  
  10. pegs :- start(P), solve(P, [], R),
  11. maplist(writeln, R), nl, nl, fail ; true.
  12.  
  13. solve(P,Prev,R):-
  14. solved(P) -> reverse([P|Prev], R) ;
  15. move(P, Q), \+memberchk(Q, Prev), solve(Q, [P|Prev], R).
  16.  
  17. :- pegs.
Success #stdin #stdout #stderr 0.08s 7920KB
stdin
Standard input is empty
stdout
[r,r,r,r,e,b,b,b,b]
[r,r,r,e,r,b,b,b,b]
[r,r,r,b,r,e,b,b,b]
[r,r,r,b,r,b,e,b,b]
[r,r,r,b,e,b,r,b,b]
[r,r,e,b,r,b,r,b,b]
[r,e,r,b,r,b,r,b,b]
[r,b,r,e,r,b,r,b,b]
[r,b,r,b,r,e,r,b,b]
[r,b,r,b,r,b,r,e,b]
[r,b,r,b,r,b,r,b,e]
[r,b,r,b,r,b,e,b,r]
[r,b,r,b,e,b,r,b,r]
[r,b,e,b,r,b,r,b,r]
[e,b,r,b,r,b,r,b,r]
[b,e,r,b,r,b,r,b,r]
[b,b,r,e,r,b,r,b,r]
[b,b,r,b,r,e,r,b,r]
[b,b,r,b,r,b,r,e,r]
[b,b,r,b,r,b,e,r,r]
[b,b,r,b,e,b,r,r,r]
[b,b,e,b,r,b,r,r,r]
[b,b,b,e,r,b,r,r,r]
[b,b,b,b,r,e,r,r,r]
[b,b,b,b,e,r,r,r,r]


[r,r,r,r,e,b,b,b,b]
[r,r,r,r,b,e,b,b,b]
[r,r,r,e,b,r,b,b,b]
[r,r,e,r,b,r,b,b,b]
[r,r,b,r,e,r,b,b,b]
[r,r,b,r,b,r,e,b,b]
[r,r,b,r,b,r,b,e,b]
[r,r,b,r,b,e,b,r,b]
[r,r,b,e,b,r,b,r,b]
[r,e,b,r,b,r,b,r,b]
[e,r,b,r,b,r,b,r,b]
[b,r,e,r,b,r,b,r,b]
[b,r,b,r,e,r,b,r,b]
[b,r,b,r,b,r,e,r,b]
[b,r,b,r,b,r,b,r,e]
[b,r,b,r,b,r,b,e,r]
[b,r,b,r,b,e,b,r,r]
[b,r,b,e,b,r,b,r,r]
[b,e,b,r,b,r,b,r,r]
[b,b,e,r,b,r,b,r,r]
[b,b,b,r,e,r,b,r,r]
[b,b,b,r,b,r,e,r,r]
[b,b,b,r,b,e,r,r,r]
[b,b,b,e,b,r,r,r,r]
[b,b,b,b,e,r,r,r,r]


stderr
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit