Recently Written · git

common-lisp-utils

My utilities for Common Lisp programming.

git clone https://github.com/equwal/common-lisp-utils

Log | Files | Refs


estimator.lisp (899 bytes)

1 (defpackage :est
2   (:use :cl :utils))
3 (defun est (fn larger? bigger smaller &optional (guess 1))
4   (let ((r (funcall fn guess)))
5     (cond ((funcall larger? r) (est fn larger? bigger smaller (funcall bigger guess)))
6 	  ((not (funcall larger? r)) (est fn larger? bigger smaller (funcall smaller guess)))
7 	  (t guess))))
8 (defun est-num (fn larger?)
9   (est fn
10        Larger?
11        (lambda (g) (* g (1+ (random 1.0))))
12        (lambda (g) (* g (random 1.0)))
13        1))
14 (defun final (str)
15   (aref str (1- (length str))))
16 (defun zero (str)
17   (char str 0))
18 (let ((count 0)
19       (acc nil))
20   (est #'identity #'(lambda (x) 
21 			    (incf count)
22 			    (push x acc)
23 			    (if (< 1000 count) (error "~A x: ~A" acc x))
24 			    (handler-case (code-char x)
25 			      (type-error nil nil)))
26        #'(lambda (x) (ceiling (* x (+ (/ 3 2) (random 1.0)))))
27        #'(lambda (x) (ceiling (* x (random 1.0))))) 1000.0)