anchor.diff:    (+ (expt (- p1-x p2-x) 2)
        (expt (- p1-y p2-y) 2)))
   
  -(defun get-relative-scores (scores)
  -  (let* ((fitness-total (reduce '+ scores))
  -	(relative-fitness (mapcar (lambda (x) (/ x fitness-total)) scores)))
  -    relative-fitness))
  -
   (defun get-best-chromosome-index (scores)
     (loop for score in scores
        for i from 0 
  
positive.code:   (set-color 0.0 0.0 0.0)
    (draw-string (font-loader app) (bukva app) 2000 -3500 :filled nil :size 250)
    (when (candidate app)
      ;TODO draw straight lines
      (loop for curve in (candidate app)
  	 do (draw-curve curve))))
  
  (defmethod exit ((app font-app))
    (zpb-ttf:close-font-loader (font-loader app))
  
negative.code: 		     collect (coords->curve coords))))
  	 
         ;; selection
          do (let ((total-score (float (reduce '+ scores))))
   	    (setf population
   		  (loop repeat population-size
   		     collect (let ((parent1 (select population scores total-score))
   				   (parent2 (select population scores total-score)))
   			       ;; crossover and mutation
   			       (mutate (crossover parent1 parent2) mutation-probability))))))))
  
  ;;;; genetic operations
  (defun initialize-population (population-size chromosome-length)
  