diff options
author | riton <riton@riton.home> | 2025-02-11 23:03:13 +0300 |
---|---|---|
committer | riton <riton@riton.home> | 2025-02-11 23:03:13 +0300 |
commit | d683a2e52f89131b50129d2a99483fba8bf096b0 (patch) | |
tree | fbd37b6d17b73930a2e3432692c52676017a6ba9 /sayı.lisp |
init
Diffstat (limited to 'sayı.lisp')
-rw-r--r-- | sayı.lisp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/sayı.lisp b/sayı.lisp new file mode 100644 index 0000000..3cbb273 --- /dev/null +++ b/sayı.lisp @@ -0,0 +1,46 @@ +(let ((sayılar (vector "" "一" "二" "三" "四" "五" "六" "七" "八" "九" "十")) + (basamaklar (vector "" "" "十" "百" "千" "万"))) + (defun sayı->yazılış (sayı &optional (stream *standard-output*)) + (labels ((öz (sayı basamak) + (multiple-value-bind (sayı rakam) (truncate sayı 10) + (when (> sayı 0) + (öz sayı (+ basamak 1))) + (case basamak + (1 (format stream "~a" (aref sayılar rakam))) + (t (case rakam + (0) + (1 (format stream "~a" (aref basamaklar basamak))) + (t (format stream "~a~a" + (aref sayılar rakam) + (aref basamaklar basamak))))))))) + (cond ((= sayı 0) (format stream "れい")) + ((> sayı 99999) (error "sayı->yazılış: sayı 99999 dan küçük olmalı")) + (t (when (< sayı 0) + (format stream "マイナス")) + (öz (abs sayı) 1)))))) + +;; (defun sayı-sor (tip) +;; (let* ((sayı (random 99999)) +;; (yazılış (with-output-to-string (str) +;; (sayı->yazılış sayı str)))) +;; (case tip +;; (:rakam +;; (format t "~a hangi sayıdır? " yazılış) +;; (let ((girdi (read))) +;; (if (= girdi sayı) +;; (format t "doğru.~%") +;; (format t "yanlış, ~d." sayı)))) +;; (:yazılış +;; (format t "~a nasıl yazılır? " sayı) +;; (let ((girdi (string-left-trim '(#\Space) (read-line)))) +;; (if (string-equal girdi yazılış) +;; (format t "doğru.~%") +;; (format t "yanlış, ~d." yazılış))))))) + +;; (let ((sayılar (vector "" "一" "二" "三" "四" "五" "六" "七" "八" "九" "十"))) +;; (declare (ignorable sayılar)) +;; (defun sayı->yazılış (sayı) +;; (let (rakam) +;; (loop :do (multiple-value-setq (sayı rakam) (truncate sayı 10)) +;; :collect rakam +;; :while (> sayı 0))))) |