anchor.diff:  (in-package :ar.com.fchurca.frisk)
  +
  +(defun keys (hash-table)
  +  (loop for k being the hash-keys in hash-table collecting k))
  +
  +(defun shuffle (list)
  +   (loop for m from (length list) downto 1
  +         for l = list then (remove v l :count 1)
  +         for v = (elt l (random m))
  +         collecting v)) 
   
   (defclass* territory ()
     ((name (error "Debe ingresar el nombre del territorio") ir)
  
positive.code: (defun territory (game territory-key)
    (gethash territory-key (territories game)))
  
  (defun territory-keys (game)
    (loop for k being the hash-keys in (territories game) collecting k))
  
  (defun territories-connected-p (game origin-key destination-key)
    (let ((graph (frontiers game)))
      (vertices-share-edge-p
        (find-vertex graph origin-key)
        (find-vertex graph destination-key))))
  
  (defgeneric move-armies (game from to amount &key))
  
  
negative.code:         (move-armies game origin-key destination-key 1)))
      (eq (owner origin) (owner destination))))
  
  (defun print-game (game)
    (format t "~&Jugadores:")
    (loop for v being the hash-values in (players game) do
          (format t "~&~t~a" (name v)))
    (format t "~&Territorios:")
    (loop for v being the hash-values in (territories game) do
          (format t "~&~a~&~tDueño:~t~a~&~tEjércitos:~a"
                  (name v)
                  (if (owner v) (name (owner v)) "Ninguno")
                  (armies v))))
  
  