lisp project
文章平均质量分 72
ryuali2010
这个作者很懒,什么都没留下…
展开
-
random text
(defparameter *words* (make-hash-table :size 10000))(defconstant maxword 100)(defun punc (c) (case c (#\. '|.|) (#\, '|,|) (#\; '|;|) (#\! '|!|) (#\? '|?|)));;当前的字符串为symb,而它前面的字符串为prev原创 2012-07-28 01:33:12 · 895 阅读 · 0 评论 -
binary search
(defun bin-search (obj vec) (let ((len (length vec))) (and (not (zerop len)) (finder obj vec 0 (- len 1)))));;vec的话,总共两种情况要么even要么odd.;;finder函数实现的功能就是在vector中查找obj,现在假设obj < obj2,这个时候需要找到左半原创 2012-07-29 14:13:38 · 538 阅读 · 0 评论 -
string substitution
(defstruct buf vec (start -1) (used -1) (new -1) (end -1))(defun bref (buf n) (svref (buf-vec buf) (mod n (length (buf-vec buf)))));;;扩展setf方法,注意下面调用的方式(defun (setf bref) (val buf n)原创 2012-07-28 00:16:41 · 649 阅读 · 0 评论 -
parse date
;;因为tokens被赋予了3个参数,目的是从一个字符串以不符合某些条件的字符为分隔符,获得分隔符之间的string对象的列表(defun tokens (str test start) (let ((p1 (position-if test str :start start))) ;;把p1设置为第一个符合test字符的位置 (if p1 (let ((p2 (pos原创 2012-07-29 14:14:30 · 528 阅读 · 0 评论 -
mirror
;;;用于判断当前的sequence的值是否是对称的。(defun mirror? (s) (let ((len (length s))) (and (evenp len) (do ((forward 0 (+ forward 1)) (back (- len 1) (- back 1))) ((or (> forward back) ;;针对情况:完原创 2012-07-29 16:13:01 · 350 阅读 · 0 评论 -
date arithmetic / map function
由date转化得到具体的天数(defconstant month #(0 31 59 90 120 151 181 212 243 273 304 334 365))(defconstant yzero 2000);;能够被4整除,并且要么是能够被400整除。要么是不能够被100整除。(defun leap? (y) (and (zerop (mod y 4))原创 2012-07-30 23:32:45 · 553 阅读 · 0 评论