;;;
;;; c:\\program files\\acl62\\music34.cl
;;;


(load "c:\\program files\\acl62\\music33.cl") 

(defun get-a-UST-from-a-pair-at-random (pair) 
  (let* ((l1 (assoc (second pair) 
                      (get-UST (first pair))))
      (l2 (rest (second l1))) 
      (len (length l2))) 
   (nth (random len) l2))) 

(defun get-n-USTs-from-a-pair-at-random (pair n)
  (do ((num n (1- num)) 
     (w)) 
    ((< num 1) (reverse w)) 
   (push (get-a-UST-from-a-pair-at-random 
                 pair) w)))

(defun get-8-USTs-from-pairs-at-random-aux (pairs)
  (do ((lst pairs (cddr lst)) 
     (w)) 
    ((null lst) (reverse w)) 
   (push (list (first lst) 
                  (get-n-USTs-from-a-pair-at-random
                     (list (first lst) (second lst))
                      8))
       w)))

(defun get-8-USTs-from-pairs-at-random (pairs)
  (do ((lst pairs (cdr lst))) 
    ((null lst)) 
   (print '*******************************)
   (print (car lst)) 
   (print (get-8-USTs-from-pairs-at-random-aux
                  (car lst)))))

;;; 
;;; (indicate-8-USTs-at-random *w1*)
;;; 
(defun indicate-8-USTs-at-random (wn)
 (tagbody 
  (my-randomize) 
  (format t "~%*** ~a ***"
              (second (first wn)))
  (format t "~%The original key is ~a."
              (first (first wn)))
  (format t "~%Enter a key.")
  loop1 
  (setf l1 (read-sentence)) 
  (if (not (key-p (car l1)))
        (go loop1))
  (if (equal (car l1) (first (first wn)))
    (setf l2 (cdr wn)) 
     (setf l2 (modulate-key1-to-key2
                      (cdr wn)
                      (first (first wn))
                      (car l1))))
  (format t "~%*** The key is ~a. ***" 
               (car l1)) 
  (get-8-USTs-from-pairs-at-random l2)))