Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; SLIME 2015-12-13
- CL-USER> (format nil "~10,'0d" 123)
- "0000000123"
- CL-USER> (coerce 'character 3)
- ; Evaluation aborted on #<SIMPLE-ERROR "bad thing to be a type specifier: ~S" {10040C6CE3}>.
- CL-USER> (coerce 3 'character)
- ; Evaluation aborted on #<SIMPLE-TYPE-ERROR expected-type: (OR CHARACTER (STRING 1)) datum: 3>.
- CL-USER> (defun digit->char (digit)
- (ecase digit
- (0 #\0) (1 #\1) (2 #\2) (3 #\3) (4 #\4)
- (5 #\5) (6 #\6) (7 #\7) (8 #\8) (9 #\9)))
- DIGIT->CHAR
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i) (count (digit->char i) in-string)))))
- ; in: DEFUN CENSUS
- ; (SETF (CHAR OUT-STRING I) (COUNT (DIGIT->CHAR I) IN-STRING))
- ; --> SB-KERNEL:%CHARSET SETF LET* FUNCALL SB-C::%FUNCALL (SETF AREF)
- ; ==>
- ; (SB-KERNEL:HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS ARRAY SB-INT:INDEX
- ; SB-C::NEW-VALUE)
- ;
- ; caught WARNING:
- ; Derived type of (COUNT (DIGIT->CHAR I) IN-STRING) is
- ; (VALUES (MOD 4611686018427387901) &OPTIONAL),
- ; conflicting with its asserted type
- ; CHARACTER.
- ; See also:
- ; The SBCL Manual, Node "Handling of Types"
- ;
- ; compilation unit finished
- ; caught 1 WARNING condition
- CENSUS
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (count (digit->char i) in-string))))))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- NIL
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (max 9 (count (digit->char i) in-string)))))))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- NIL
- CL-USER> (defun census (number)
- (let ((in-string (print (format nil "~10,'0d" number)))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (max 9 (count (digit->char i) in-string)))))))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- "0000000001"
- NIL
- CL-USER> (defun census (number)
- (let ((in-string (print (format nil "~10,'0d" number)))
- (out-string (print (make-string 10))))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (max 9 (count (digit->char i) in-string)))))))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- "0000000001"
- NIL
- CL-USER> (defun census (number)
- (let ((in-string (print (format nil "~10,'0d" number)))
- (out-string (print (make-string 10))))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (max 9 (count (digit->char i) in-string)))))
- out-string))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- "0000000001"
- "9999999999"
- CL-USER> (defun census (number)
- (let ((in-string (print (format nil "~10,'0d" number)))
- (out-string (print (make-string 10))))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (min 9 (count (digit->char i) in-string)))))
- out-string))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- "0000000001"
- "9100000000"
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (digit->char (max 0 (min 9 (count (digit->char i) in-string))))))
- out-string))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (ql:quickload :thread-expr)
- To load "thread-expr":
- Load 1 ASDF system:
- thread-expr
- ; Loading "thread-expr"
- (:THREAD-EXPR)
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (-> i
- digit->char
- (count in-string)
- (min 9)
- (max 0)
- digit->char)))
- out-string))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 1)
- "9100000000"
- CL-USER> (census 2)
- "9010000000"
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (-> i
- digit->char
- (count in-string)
- (min 9)
- (max 0)
- digit->char)))
- (parse-integer out-string)))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (defun census (number)
- (let ((in-string (format nil "~10,'0d" number))
- (out-string (make-string 10)))
- (loop for i from 0 to 9
- do (setf (char out-string i)
- (-> i
- digit->char
- (count in-string)
- (min 9)
- (max 0)
- digit->char)))
- (parse-integer out-string)))
- WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
- CENSUS
- CL-USER> (census 2)
- 9010000000
- 10
- CL-USER> (census *)
- 8100000001
- 10
- CL-USER> (census *)
- 7200000010
- 10
- CL-USER> (census *)
- 7110000100
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census 61111)
- 5400001000
- 10
- CL-USER> (census 61111)
- 5400001000
- 10
- CL-USER> (census 61111)
- 5400001000
- 10
- CL-USER> (census 61111)
- 5400001000
- 10
- CL-USER> (census 61111)
- 5400001000
- 10
- CL-USER> (census *)
- 7100110000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census 123456789)
- 1111111111
- 10
- CL-USER> (census *)
- 900000000
- 10
- CL-USER> (census *)
- 9000000001
- 10
- CL-USER> (census *)
- 8100000001
- 10
- CL-USER> (census *)
- 7200000010
- 10
- CL-USER> (census *)
- 7110000100
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census *)
- 6300000100
- 10
- CL-USER> (census *)
- 7101001000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census 61013400)
- 5201101000
- 10
- CL-USER> (census *)
- 5310010000
- 10
- CL-USER> (census *)
- 6201010000
- 10
- CL-USER> (census *)
- 6210001000
- 10
Advertisement
Add Comment
Please, Sign In to add comment