    * The worse immediate lost afterwards"
   [game player]
   (let [moves (get-in game [:moves player])
+        others (remove #{player} players)
         outcomes (map (fn [[m _]] [m (play-move game m)]) moves)]
     (first
       (apply max-key second

          (fn [[m outcome]]
            [m (-
                 (get-in outcome [:scores player])
                 (worst-immediate-loss outcome player))])
          outcomes)))
    ))


       + (second %))
    (get-in game [:moves player])))

#_(defn best-immediate-move
   "Return the move with the highest immediate score increase for the provided player"
   [game player]
   (best-immediate-move-with game player identity))

(defn worst-immediate-loss
  "Return the next game move:
   * Executed by the 'player'
   * That would reduce the score for 'looser'"
  [game player looser]
  (let [move-filter #(= looser (:looser %))
        move (best-immediate-move-with game (:player game) move-filter)]
    (transduce (map (comp count :taken)) + (second move))
    ))
