12345678910111213141516171819202122232425 |
- (ql:quickload :cl-who)
- (import 'cl-who:with-html-output-to-string)
- (defun punnet (stringa stringb)
- (declare (string stringa stringb))
- (let* ((a (map 'list #'(lambda (x) (format nil "~c" x)) stringa))
- (b (map 'list #'(lambda (x) (format nil "~c" x)) stringb))
- (lena (length a))
- (lenb (length b)))
- (if (not (= lena lenb))
- (if (< lena lenb)
- (error "a < b, ~a < ~b" lena lenb)
- (error "a > b, ~a > ~b" lena lenb))
- (loop for index-b from 0 to (1- lena)
- collect (loop for index-a from 0 to (1- lena)
- collect (if (= index-b index-a)
- (nth index-b b)
- (nth index-a a)))))))
- (defun punnet-html (string-a string-b)
- (with-html-output-to-string (out)
- (:table
- (loop for line in (punnet string-a string-b)
- do (htm (:tr (loop for cell in line
- do (htm (:td (str cell))))))))))
|