Lispで文字を寄せる
文字を寄せる方法を簡単にですが実装してみました。
(defun make-string-lefted (count target) (let((space-num (- count (length target)))) (concatenate 'string target (make-string space-num :initial-element #\Space)))) (defun make-string-righted (count target) (let((space-num (- count (length target)))) (concatenate 'string (make-string space-num :initial-element #\Space) target ))) (defun make-string-centered (count target) (if (> count (length target)) (let* ((space-num (truncate (- count (length target)) 2)) (left-space-string (make-string space-num :initial-element #\Space)) (right-space-string (make-string (- count (+ (length target) space-num )) :initial-element #\Space))) (concatenate 'string left-space-string target right-space-string )) target ))
それでは実行してみます
(make-string-centered 10 "Lisp") " Lisp " (make-string-lefted 10 "Lisp") "Lisp " (make-string-righted 10 "Lisp") " Lisp"
こんな感じ。
うまく動いているような気がします。