Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,12 @@
|
|||
(defun mid3 (n)
|
||||
(let ((a (abs n))
|
||||
(hmd)) ; how many digits
|
||||
(labels ((give (fmt &optional x y) (return-from mid3 (format nil fmt x y)))
|
||||
(need (x) (give "Need ~a digits, not ~d." x hmd))
|
||||
(nbr (n) (give "~3,'0d" n)))
|
||||
(when (zerop n) (give "Zero is 1 digit"))
|
||||
(setq hmd (truncate (1+ (log a 10))))
|
||||
(cond ((< hmd 3) (need "3+"))
|
||||
((= hmd 3) (nbr a))
|
||||
((evenp hmd) (need "odd number of"))
|
||||
(t (nbr (mod (truncate a (expt 10 (/ (- hmd 3) 2))) 1000)))))))
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
(loop as n in '(123 12345 1234567 987654321
|
||||
10001 -10001 -123 -100 100 -12345
|
||||
1 2 -1 -10 2002 -2002 0)
|
||||
do (format t "~d:~12t~a~%" n (mid3 n)))
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
(defun mid3 (i)
|
||||
(let ((ch-vec (coerce (format nil "~A" (abs i)) 'vector)))
|
||||
(when (evenp (length ch-vec))
|
||||
(return-from mid3
|
||||
(format nil "Error: The number representation must have an odd ~
|
||||
number of digits.")))
|
||||
|
||||
(when (and (< i 100)
|
||||
(> i -100))
|
||||
(return-from mid3
|
||||
(format nil "Error: Must be >= 100 or <= -100.")))
|
||||
(let ((half (/ (1- (length ch-vec)) 2)))
|
||||
(return-from mid3 (format nil "~A~A~A"
|
||||
(elt ch-vec (1- half))
|
||||
(elt ch-vec half)
|
||||
(elt ch-vec (1+ half))))
|
||||
)))
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(defun test-mid3 ()
|
||||
(let ((test-lst (list 123
|
||||
12345
|
||||
1234567
|
||||
987654321
|
||||
10001
|
||||
-10001
|
||||
-123
|
||||
-100
|
||||
100
|
||||
-12345
|
||||
1
|
||||
2
|
||||
-1
|
||||
-10
|
||||
2002
|
||||
-2002
|
||||
0
|
||||
)))
|
||||
(labels
|
||||
((run-tests (lst)
|
||||
(cond ((null lst)
|
||||
nil)
|
||||
|
||||
(t
|
||||
(format t "~A ~15T ~A~%" (first lst) (mid3 (first lst)))
|
||||
(run-tests (rest lst))))))
|
||||
|
||||
(run-tests test-lst)))
|
||||
(values)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue