_ALGORITHM ALLEY_ by John Swartz Listing One ; Demonstration of construction of a constrained combination ; using symbolic data. Programmer: John Swartz, Austin TX (defun makeset (lat) (cond ((null lat) ()) ((member (car lat)(cdr lat) :test equal) (makeset (cdr lat))) (t (cons (car lat)(makeset (cdr lat)))) )) (defun combinations (size set) (cond ((zerop size) '(())) ((null set) ()) ( t (append (distrib (car set) (combinations (1- size) (cdr set))) (combinations size (cdr set))) ))) (defun distrib (a sett) (cond ((null sett) ()) (t (cons (cons a (car sett)) (distrib a (cdr sett)))) )) (expand 80) (print (mem)) (mapcar print (makeset (combinations 9 '(red red red green green green white white white blue blue blue) ))) (print (mem)) (exit) Listing Two Thursday 28-Mar-96 12:14:52 XLISP version 1.6, copyright (c) 1985, by David Betz ; loading "4ddj.lsp" Nodes: 37000 Free nodes: 34659 Segments: 37 Allocate: 1000 Total: 534438 Collections: 2 NIL (RED RED RED GREEN GREEN GREEN WHITE WHITE WHITE) (RED RED RED GREEN GREEN GREEN WHITE WHITE BLUE) (RED RED RED GREEN GREEN GREEN WHITE BLUE BLUE) (RED RED RED GREEN GREEN GREEN BLUE BLUE BLUE) (RED RED RED GREEN GREEN WHITE WHITE WHITE BLUE) (RED RED RED GREEN GREEN WHITE WHITE BLUE BLUE) (RED RED RED GREEN GREEN WHITE BLUE BLUE BLUE) (RED RED RED GREEN WHITE WHITE WHITE BLUE BLUE) (RED RED RED GREEN WHITE WHITE BLUE BLUE BLUE) (RED RED RED WHITE WHITE WHITE BLUE BLUE BLUE) (RED RED GREEN GREEN GREEN WHITE WHITE WHITE BLUE) (RED RED GREEN GREEN GREEN WHITE WHITE BLUE BLUE) (RED RED GREEN GREEN GREEN WHITE BLUE BLUE BLUE) (RED RED GREEN GREEN WHITE WHITE WHITE BLUE BLUE) (RED RED GREEN GREEN WHITE WHITE BLUE BLUE BLUE) (RED RED GREEN WHITE WHITE WHITE BLUE BLUE BLUE) (RED GREEN GREEN GREEN WHITE WHITE WHITE BLUE BLUE) (RED GREEN GREEN GREEN WHITE WHITE BLUE BLUE BLUE) (RED GREEN GREEN WHITE WHITE WHITE BLUE BLUE BLUE) (GREEN GREEN GREEN WHITE WHITE WHITE BLUE BLUE BLUE) Nodes: 37000 Free nodes: 26828 Segments: 37 Allocate: 1000 Total: 534471 Collections: 7 NIL Thursday 28-Mar-96 12:17:53