return statements

This commit is contained in:
2020-12-01 16:07:22 -07:00
parent 48f0034123
commit 2c67ba9473
2 changed files with 9 additions and 7 deletions

View File

@@ -28,15 +28,12 @@
(defun :kiss.List<Int> pairWithSum [sum :kiss.List<Int> numbers]
// Put the numbers in a map for random access. This gives an O(n) solution
(deflocal :Map<Int,Int> numbersMap (new Map))
(deflocal &mut pair null)
(doFor number numbers
(dict-set numbersMap number (- sum number))
(let [requiredForPair (dict-get numbersMap number)]
(when (numbersMap.exists requiredForPair)
(set pair (or pair [number requiredForPair])))))
// TODO implement early return, break
pair)
(return [number requiredForPair]))))
null)
(defun :kiss.List<Int> trioWithSum [sum :kiss.List<Int> numbers]
(deflocal &mut trio null)
@@ -44,5 +41,5 @@
(let [requiredForTrio (- sum number)
pairThatSatisfies (pairWithSum requiredForTrio numbers)]
(when pairThatSatisfies
(set trio [number (nth pairThatSatisfies 0) (nth pairThatSatisfies 1)]))))
trio)
(return [number (nth pairThatSatisfies 0) (nth pairThatSatisfies 1)]))))
null)