Added lisp along with some study work
This commit is contained in:
26
lisp/ansi_lisp/ch2/problem_8/print_dots.lisp
Normal file
26
lisp/ansi_lisp/ch2/problem_8/print_dots.lisp
Normal file
@ -0,0 +1,26 @@
|
||||
;; Take a positive int and print that many dots
|
||||
|
||||
;; repetition
|
||||
(defun print-dots(num-of-dots)
|
||||
(do ((i 0 (+ i 1)))
|
||||
((= i num-of-dots) 'done)
|
||||
(format t ". ")))
|
||||
;; recursion
|
||||
(defun print-dots-rec(num-of-dots)
|
||||
;plusp checks if it's a positivie integer above 0.0
|
||||
(if (plusp num-of-dots)
|
||||
(progn
|
||||
(format t ". ")
|
||||
(print-dots-rec(- num-of-dots 1)))))
|
||||
|
||||
;; Take a list and return the number of times the symbol "a" occurs in it
|
||||
(defun count-a-symbols(lst)
|
||||
(do ((new-lst lst (cdr new-lst))
|
||||
(n 0 (+ n (if (eq (car new-lst) 'a) 1 0))))
|
||||
((not new-lst) n)))
|
||||
|
||||
;; Now do a recursive version (which is probably easier)
|
||||
(defun count-a-symbols-rec(lst)
|
||||
(if lst
|
||||
(+ (if (eq (car lst) 'a)1 0) (count-a-symbols-rec(cdr lst)))
|
||||
1))
|
Reference in New Issue
Block a user