(defun mostrar-paso (anterior actual)
(let ((ml (estado-ml anterior))
(cl (estado-cl anterior))
(mr (estado-mr anterior))
(cr (estado-cr anterior))
(side (estado-side anterior))
;; Datos del estado después del movimiento
(ml2 (estado-ml actual))
(cl2 (estado-cl actual))
(mr2 (estado-mr actual))
(cr2 (estado-cr actual))
(side2 (estado-side actual)))
;; Calculamos quiénes están en el bote
(let* ((m-en-bote (abs (- ml ml2)))
(c-en-bote (abs (- cl cl2)))
(pasajeros (personas m-en-bote c-en-bote)))
(format t "~%--- Paso ~a ---~%" (length (estado-camino actual)))
;; Representación ANTES de cruzar
(format t "Inicio: ~a " (lado-a-string ml cl))
(if (= side 0) (format t "B ~~~~~~ ") (format t "~~~~~~ B "))
(format t "~a~%" (lado-a-string mr cr))
(format t ">>> Cruce: [~a]~%" pasajeros)
;; Representación DESPUÉS de cruzar
(format t "Final: ~a " (lado-a-string ml2 cl2))
(if (= side2 0) (format t "B ~~~~~~ ") (format t "~~~~~~ B "))
(format t "~a~%" (lado-a-string mr2 cr2)))))