Skip to content

Instantly share code, notes, and snippets.

View ehaliewicz's full-sized avatar

Erik Haliewicz ehaliewicz

View GitHub Profile
@ehaliewicz
ehaliewicz / tail-recur.lisp
Created October 28, 2012 00:49
Tail-recursion and mutual recursion macros
;; A couple of silly macros for a language that has defmacro but no tail-recursion
;; the mutual recursion macro is even worse, because you can only really 'call' one of the functions
(defmacro recur (arg-pairs &body body)
(let ((arg-names (mapcar #'car arg-pairs)) ;; extract loop variable names
(arg-vals (mapcar #'cadr arg-pairs))) ;; extract start values
;; block to return from
`(block nil
(defun contains (self value)
(labels ((recur (value current)
(if (null current)
nil
(cond
((= value current.value) t)
((< value current.value) (recur value current.left))
(t (recur value current.right))))))
(recur value self.root)))
@ehaliewicz
ehaliewicz / fsm.py
Created May 24, 2012 03:04
Python FSM parser
# process() kind of parses Tadoku entries
# Character Classes
# 0. Space
# 1. Hash
# 2. Semicolon
# 3. Number
# 4. Other
@ehaliewicz
ehaliewicz / chop-recur.lisp
Created May 23, 2012 02:06
Recursive Binary Search
(defun chop-1 (num tree)
(labels ((recur (num tree start-index)
(if (equalp 0 (length tree)) -1
(let* ((mid-point (truncate (/ (length tree) 2)))
(mid-num (elt tree mid-point)))
(cond
((= (length tree) 0) -1)
((= mid-num num) (+ mid-point start-index))
((= (length tree) 1) -1)
((> mid-num num) (recur num (subseq tree 0 mid-point) 0)) ;; check in first half of tree
@ehaliewicz
ehaliewicz / fibonacci.dasm
Created April 29, 2012 02:03
fibonacci in dcpu-16 asm
SET A, 0
SET B, 1
SET C, 10 ;; set to 10 to find the tenth fibonacci number
:test IFE C, 0
SET PC, done
;; loop
SET X, A
ADD X, B