| wxyz | f | g | h | 
| 0000 | 0 | 0 | 0 | 
| 0001 | 0 | 1 | 0 | 
| 0010 | 0 | 1 | 0 | 
| 0011 | 1 | 0 | 1 | 
| 0100 | 0 | 1 | 0 | 
| 0101 | 1 | 0 | 1 | 
| 0110 | 1 | 0 | 1 | 
| 0111 | 1 | 1 | 1 | 
| 1000 | 0 | 0 | 1 | 
| 1001 | 0 | 1 | 1 | 
| 1010 | 0 | 1 | 1 | 
| 1011 | 1 | 0 | 0 | 
| 1100 | 0 | 1 | 0 | 
| 1101 | 1 | 0 | 0 | 
| 1110 | 1 | 0 | 0 | 
| 1111 | 1 | 1 | 0 | 
| 
      input
      add      X
      store    X
      add      X
      add      X
Top,  skipcond 800
      jump     Done
      output
      subt     Decr
      jump     Top
Done, halt
Decr, dec      3
X,    dec      1
 | 
| 
(defun f (N L)
   (cond
       ((not (listp L)) nil)
       ((not (integerp N)) nil)
       ((< N 0) nil)
       ((null L) nil)
       ((not (numberp (car L))) nil)
       ((= N 0) (car L))
       (t (f (- N 1) (cdr L)))))
 | 
| f([], 0). f([H|T], Result) :- number(H), f(T, TR), R is H + TR, R = Result. f([_|T], Result) :- f(T,Result). | 
Regular expression: ( 0 | (1 (0 1* 0)* 1)* )
State table:
| Current state | Input | New state | 
| Start | 0 | Accept | 
| Start | 1 | B | 
| Accept | 0 | Accept | 
| Accept | 1 | B | 
| B | 0 | C | 
| B | 1 | Accept | 
| C | 0 | B | 
| C | 1 | C | 
e.g. the result of getSmallerNums([13, 7, 7, 9, 11, 8], 9, R). would be R = [ 7, 7, 8 ]