refactor to use seq/lazy-seq over vector
more refactoring; function renames, re-arranging args
combined algos.clj and core.clj