about summary refs log tree commit diff stats
path: root/janet/tmplt/src/app.janet
diff options
context:
space:
mode:
authorelioat <hi@eli.li>2023-07-13 09:34:30 -0400
committerelioat <hi@eli.li>2023-07-13 09:34:30 -0400
commit0133554853b588aa70eaeb0eaba16d5fdc24b8d3 (patch)
tree97894a9d821e60e0b8f331920ab6be6764edab53 /janet/tmplt/src/app.janet
parente8af8b886ac22084d0ff0f53dde392a3c40cd6a6 (diff)
downloadtour-0133554853b588aa70eaeb0eaba16d5fdc24b8d3.tar.gz
*
Diffstat (limited to 'janet/tmplt/src/app.janet')
-rw-r--r--janet/tmplt/src/app.janet18
1 files changed, 18 insertions, 0 deletions
diff --git a/janet/tmplt/src/app.janet b/janet/tmplt/src/app.janet
new file mode 100644
index 0000000..f67e8e3
--- /dev/null
+++ b/janet/tmplt/src/app.janet
@@ -0,0 +1,18 @@
+(defn sum3
+  "Solve the 3SUM problem in O(n^2) time."
+  [s]
+  (def tab @{})
+  (def solutions @{})
+  (def len (length s))
+  (for k 0 len
+    (put tab (s k) k))
+  (for i 0 len
+    (for j 0 len
+      (def k (get tab (- 0 (s i) (s j))))
+      (when (and k (not= k i) (not= k j) (not= i j))
+        (put solutions {i true j true k true} true))))
+  (map keys (keys solutions)))
+
+(let [arr @[2 4 1 3 8 7 -3 -1 12 -5 -8]]
+  (printf "3sum of %j: " arr)
+  (printf "%j" (sum3 arr)))
\ No newline at end of file