lisp 習題 錢幣換算問題
定義一個函式,接受一個整數 cents 並返回四個值,將數字用 25- , 10- , 5- , 1- 來顯示,使用最少數量的硬幣。(譯註: 25- 是 25 美分,以此類推)
CL-USER> (defun cents (n)
(if (not (integerp n))
nil
(let ((x25 0)(x10 0)(x5 0 )(x1 0)(lst nil))
(setf lst (multiple-value-list (floor n 25)))
(if (= 0 (second lst))
(cons 'x25 (car lst))
(progn
(setf x25 (cons 'x25 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 10)))
(if (= 0 (second lst))
(list x25 (cons 'x10 (car lst)))
(progn
(setf x10 (cons 'x10 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 5)))
(list x25 x10 (cons 'x5 (first lst)) (cons 'x1 (second lst))))))))))
CENTS
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 6)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 1))
CL-USER> (cents 11)
((X25 . 0) (X10 . 1) (X5 . 0) (X1 . 1))
CL-USER> (cents 15)
((X25 . 0) (X10 . 1) (X5 . 1) (X1 . 0))
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 25)
(X25 . 1)
CL-USER> (cents 10)
((X25 . 0) (X10 . 1))
CL-USER>
CL-USER> (defun cents (n)
(if (not (integerp n))
nil
(let ((x25 0)(x10 0)(x5 0 )(x1 0)(lst nil))
(setf lst (multiple-value-list (floor n 25)))
(if (= 0 (second lst))
(cons 'x25 (car lst))
(progn
(setf x25 (cons 'x25 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 10)))
(if (= 0 (second lst))
(list x25 (cons 'x10 (car lst)))
(progn
(setf x10 (cons 'x10 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 5)))
(list x25 x10 (cons 'x5 (first lst)) (cons 'x1 (second lst))))))))))
CENTS
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 6)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 1))
CL-USER> (cents 11)
((X25 . 0) (X10 . 1) (X5 . 0) (X1 . 1))
CL-USER> (cents 15)
((X25 . 0) (X10 . 1) (X5 . 1) (X1 . 0))
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 25)
(X25 . 1)
CL-USER> (cents 10)
((X25 . 0) (X10 . 1))
CL-USER>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-741715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- lisp 習題 occurrencesLisp
- lisp 習題 post+Lisp
- lisp 習題 our-unionLisp
- lisp 習題 矩陣旋轉Lisp矩陣
- 99-lisp lisp 的99個問題 P11-20Lisp
- 99-lisp lisp 的99個問題 P1-10Lisp
- 從【零錢兌換】問題看01揹包和完全揹包問題
- lisp 習題 區分非遞減的列表Lisp
- lisp 習題 (member '(a) '((a) (b))) 為什麼返回nilLisp
- [LeetCode解題] -- 零錢兌換LeetCode
- DAG模型——硬幣問題模型
- 金幣陣列問題陣列
- 精度計算問題
- lisp 習題 用列表元素標識檔案一行。Lisp
- MySQL 計算生日問題MySql
- latex 語法塊中字型加粗問題、換行問題
- 探討系統中?錢的精度問題
- 動態規劃5:找零錢問題動態規劃
- 習題筆記 錢能 第3章節筆記
- 習題筆記 錢能 第4章節筆記
- 習題筆記 錢能 第5章節筆記
- mysql隱式轉換問題MySql
- cgo 型別轉換問題??Go型別
- 日期型別轉換問題型別
- 行列轉換問題總結
- 字符集合轉換問題
- (一) 溫度轉換問題
- 解決docker換源問題Docker
- 關於Java中進位制轉換以及位運算問題Java
- 減治法解決假幣問題
- 基於關鍵詞及問題主題的問題相似度計算
- 問題 A: C語言習題 計算該日在本年中是第幾天C語言
- react 學習 問題React
- 雲端計算40個問題
- Java中的"+"運算問題Java
- 閏年的計算問題
- 雲端計算的安全問題
- 【問題解決】使用YYYY-MM-dd時間轉換問題