Isoraqathedh

Problem of Digits

Jan 21st, 2016
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 7.83 KB | None | 0 0
  1. ; SLIME 2015-12-13
  2. CL-USER> (format nil "~10,'0d" 123)
  3. "0000000123"
  4. CL-USER> (coerce 'character 3)
  5. ; Evaluation aborted on #<SIMPLE-ERROR "bad thing to be a type specifier: ~S" {10040C6CE3}>.
  6. CL-USER> (coerce 3 'character)
  7. ; Evaluation aborted on #<SIMPLE-TYPE-ERROR expected-type: (OR CHARACTER (STRING 1)) datum: 3>.
  8. CL-USER> (defun digit->char (digit)
  9.            (ecase digit
  10.              (0 #\0) (1 #\1) (2 #\2) (3 #\3) (4 #\4)
  11.              (5 #\5) (6 #\6) (7 #\7) (8 #\8) (9 #\9)))
  12. DIGIT->CHAR
  13. CL-USER> (defun census (number)
  14.            (let ((in-string (format nil "~10,'0d" number))
  15.                  (out-string (make-string 10)))
  16.              (loop for i from 0 to 9
  17.                    do (setf (char out-string i) (count (digit->char i) in-string)))))
  18. ; in: DEFUN CENSUS
  19. ;     (SETF (CHAR OUT-STRING I) (COUNT (DIGIT->CHAR I) IN-STRING))
  20. ; --> SB-KERNEL:%CHARSET SETF LET* FUNCALL SB-C::%FUNCALL (SETF AREF)
  21. ; ==>
  22. ;   (SB-KERNEL:HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS ARRAY SB-INT:INDEX
  23. ;                                                 SB-C::NEW-VALUE)
  24. ;
  25. ; caught WARNING:
  26. ;   Derived type of (COUNT (DIGIT->CHAR I) IN-STRING) is
  27. ;     (VALUES (MOD 4611686018427387901) &OPTIONAL),
  28. ;   conflicting with its asserted type
  29. ;     CHARACTER.
  30. ;   See also:
  31. ;     The SBCL Manual, Node "Handling of Types"
  32. ;
  33. ; compilation unit finished
  34. ;   caught 1 WARNING condition
  35. CENSUS
  36. CL-USER> (defun census (number)
  37.            (let ((in-string (format nil "~10,'0d" number))
  38.                  (out-string (make-string 10)))
  39.              (loop for i from 0 to 9
  40.                    do (setf (char out-string i)
  41.                             (digit->char (count (digit->char i) in-string))))))
  42. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  43. CENSUS
  44. CL-USER> (census 1)
  45. NIL
  46. CL-USER> (defun census (number)
  47.            (let ((in-string (format nil "~10,'0d" number))
  48.                  (out-string (make-string 10)))
  49.              (loop for i from 0 to 9
  50.                    do (setf (char out-string i)
  51.                             (digit->char (max 9 (count (digit->char i) in-string)))))))
  52. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  53. CENSUS
  54. CL-USER> (census 1)
  55. NIL
  56. CL-USER> (defun census (number)
  57.            (let ((in-string (print (format nil "~10,'0d" number)))
  58.                  (out-string (make-string 10)))
  59.              (loop for i from 0 to 9
  60.                    do (setf (char out-string i)
  61.                             (digit->char (max 9 (count (digit->char i) in-string)))))))
  62. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  63. CENSUS
  64. CL-USER> (census 1)
  65.  
  66. "0000000001"
  67. NIL
  68. CL-USER> (defun census (number)
  69.            (let ((in-string (print (format nil "~10,'0d" number)))
  70.                  (out-string (print (make-string 10))))
  71.              (loop for i from 0 to 9
  72.                    do (setf (char out-string i)
  73.                             (digit->char (max 9 (count (digit->char i) in-string)))))))
  74. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  75. CENSUS
  76. CL-USER> (census 1)
  77.  
  78. "0000000001"
  79. NIL
  80. CL-USER> (defun census (number)
  81.            (let ((in-string (print (format nil "~10,'0d" number)))
  82.                  (out-string (print (make-string 10))))
  83.              (loop for i from 0 to 9
  84.                    do (setf (char out-string i)
  85.                             (digit->char (max 9 (count (digit->char i) in-string)))))
  86.              out-string))
  87. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  88. CENSUS
  89. CL-USER> (census 1)
  90.  
  91. "0000000001"
  92. "9999999999"
  93. CL-USER> (defun census (number)
  94.            (let ((in-string (print (format nil "~10,'0d" number)))
  95.                  (out-string (print (make-string 10))))
  96.              (loop for i from 0 to 9
  97.                    do (setf (char out-string i)
  98.                             (digit->char (min 9 (count (digit->char i) in-string)))))
  99.              out-string))
  100. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  101. CENSUS
  102. CL-USER> (census 1)
  103.  
  104. "0000000001"
  105. "9100000000"
  106. CL-USER> (defun census (number)
  107.            (let ((in-string (format nil "~10,'0d" number))
  108.                  (out-string (make-string 10)))
  109.              (loop for i from 0 to 9
  110.                    do (setf (char out-string i)
  111.                             (digit->char (max 0 (min 9 (count (digit->char i) in-string))))))
  112.              out-string))
  113. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  114. CENSUS
  115. CL-USER> (ql:quickload :thread-expr)
  116. To load "thread-expr":
  117.   Load 1 ASDF system:
  118.     thread-expr
  119. ; Loading "thread-expr"
  120.  
  121. (:THREAD-EXPR)
  122. CL-USER> (defun census (number)
  123.            (let ((in-string (format nil "~10,'0d" number))
  124.                  (out-string (make-string 10)))
  125.              (loop for i from 0 to 9
  126.                    do (setf (char out-string i)
  127.                             (-> i
  128.                               digit->char
  129.                               (count in-string)
  130.                               (min 9)
  131.                               (max 0)
  132.                               digit->char)))
  133.              out-string))
  134. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  135. CENSUS
  136. CL-USER> (census 1)
  137. "9100000000"
  138. CL-USER> (census 2)
  139. "9010000000"
  140. CL-USER> (defun census (number)
  141.            (let ((in-string (format nil "~10,'0d" number))
  142.                  (out-string (make-string 10)))
  143.              (loop for i from 0 to 9
  144.                    do (setf (char out-string i)
  145.                             (-> i
  146.                               digit->char
  147.                               (count in-string)
  148.                               (min 9)
  149.                               (max 0)
  150.                               digit->char)))
  151.              (parse-integer out-string)))
  152. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  153. CENSUS
  154. CL-USER> (defun census (number)
  155.            (let ((in-string (format nil "~10,'0d" number))
  156.                  (out-string (make-string 10)))
  157.              (loop for i from 0 to 9
  158.                    do (setf (char out-string i)
  159.                             (-> i
  160.                               digit->char
  161.                               (count in-string)
  162.                               (min 9)
  163.                               (max 0)
  164.                               digit->char)))
  165.              (parse-integer out-string)))
  166. WARNING: redefining COMMON-LISP-USER::CENSUS in DEFUN
  167. CENSUS
  168. CL-USER> (census 2)
  169. 9010000000
  170. 10
  171. CL-USER> (census *)
  172. 8100000001
  173. 10
  174. CL-USER> (census *)
  175. 7200000010
  176. 10
  177. CL-USER> (census *)
  178. 7110000100
  179. 10
  180. CL-USER> (census *)
  181. 6300000100
  182. 10
  183. CL-USER> (census *)
  184. 7101001000
  185. 10
  186. CL-USER> (census *)
  187. 6300000100
  188. 10
  189. CL-USER> (census *)
  190. 7101001000
  191. 10
  192. CL-USER> (census *)
  193. 6300000100
  194. 10
  195. CL-USER> (census *)
  196. 7101001000
  197. 10
  198. CL-USER> (census *)
  199. 6300000100
  200. 10
  201. CL-USER> (census 61111)
  202. 5400001000
  203. 10
  204. CL-USER> (census 61111)
  205. 5400001000
  206. 10
  207. CL-USER> (census 61111)
  208. 5400001000
  209. 10
  210. CL-USER> (census 61111)
  211. 5400001000
  212. 10
  213. CL-USER> (census 61111)
  214. 5400001000
  215. 10
  216. CL-USER> (census *)
  217. 7100110000
  218. 10
  219. CL-USER> (census *)
  220. 6300000100
  221. 10
  222. CL-USER> (census *)
  223. 7101001000
  224. 10
  225. CL-USER> (census *)
  226. 6300000100
  227. 10
  228. CL-USER> (census *)
  229. 7101001000
  230. 10
  231. CL-USER> (census 123456789)
  232. 1111111111
  233. 10
  234. CL-USER> (census *)
  235. 900000000
  236. 10
  237. CL-USER> (census *)
  238. 9000000001
  239. 10
  240. CL-USER> (census *)
  241. 8100000001
  242. 10
  243. CL-USER> (census *)
  244. 7200000010
  245. 10
  246. CL-USER> (census *)
  247. 7110000100
  248. 10
  249. CL-USER> (census *)
  250. 6300000100
  251. 10
  252. CL-USER> (census *)
  253. 7101001000
  254. 10
  255. CL-USER> (census *)
  256. 6300000100
  257. 10
  258. CL-USER> (census *)
  259. 7101001000
  260. 10
  261. CL-USER> (census *)
  262. 6300000100
  263. 10
  264. CL-USER> (census *)
  265. 7101001000
  266. 10
  267. CL-USER> (census 61013400)
  268. 5201101000
  269. 10
  270. CL-USER> (census 61013400)
  271. 5201101000
  272. 10
  273. CL-USER> (census 61013400)
  274. 5201101000
  275. 10
  276. CL-USER> (census 61013400)
  277. 5201101000
  278. 10
  279. CL-USER> (census 61013400)
  280. 5201101000
  281. 10
  282. CL-USER> (census 61013400)
  283. 5201101000
  284. 10
  285. CL-USER> (census *)
  286. 5310010000
  287. 10
  288. CL-USER> (census *)
  289. 6201010000
  290. 10
  291. CL-USER> (census *)
  292. 6210001000
  293. 10
Advertisement
Add Comment
Please, Sign In to add comment