1
0
mirror of https://github.com/janet-lang/janet synced 2024-09-29 15:30:41 +00:00
janet/examples/3sum.dst
Calvin Rose 73ead5c2de Update core namespace. Clean up some code,
and put more emphasis on indexed data-structure combinators
instead of iterators.
2018-03-28 13:58:56 -04:00

18 lines
440 B
Plaintext

(import "examples/iterators.dst")
(defn sum3
"Solve the 3SUM problem O(n^2) time."
[s]
(def tab @{})
(def solutions @{})
(def len (length s))
(for [k 0 len]
(put tab (get s k) k))
(for [i 0 len]
(for [j 0 len]
(def k (get tab (- 0 (get s i) (get s j))))
(when (and k (not= k i) (not= k j) (not= i j))
(put solutions {i true j true k true} true))))
(iter2array (map (fn [x] (iter2array (keys x))) (keys solutions))))