Add solution to day 1 part 2
This commit is contained in:
parent
b6af9c467e
commit
e320e31369
|
|
@ -46,9 +46,68 @@
|
||||||
(break))))
|
(break))))
|
||||||
@[left right])
|
@[left right])
|
||||||
|
|
||||||
(defn main [script filename]
|
(defn sort_and_deduplicate [ arr ]
|
||||||
|
(def sorted_array (sort arr))
|
||||||
|
(def output_array @[])
|
||||||
|
(def count_array @[])
|
||||||
|
|
||||||
|
(var i 0)
|
||||||
|
(var j 0)
|
||||||
|
(while (< i (length sorted_array))
|
||||||
|
(do
|
||||||
|
(set (output_array j) (get sorted_array i))
|
||||||
|
(var local_count 1)
|
||||||
|
(++ i)
|
||||||
|
(while (= (get output_array j) (get sorted_array i))
|
||||||
|
(do
|
||||||
|
(set local_count (+ 1 local_count))
|
||||||
|
(++ i)))
|
||||||
|
(set (count_array j) local_count)
|
||||||
|
(++ j)))
|
||||||
|
|
||||||
|
@[output_array count_array])
|
||||||
|
|
||||||
|
(defn find_in_dedup_array [ num data_arr count_arr ]
|
||||||
|
(var lower_bound 0)
|
||||||
|
(var upper_bound (- (length data_arr) 1))
|
||||||
|
(var mid (math/floor (/ (+ lower_bound upper_bound) 2)))
|
||||||
|
(var output 0)
|
||||||
|
(var lo true)
|
||||||
|
(while lo
|
||||||
|
(do
|
||||||
|
(if (<= (- upper_bound lower_bound) 1)
|
||||||
|
(do
|
||||||
|
(set lo false)
|
||||||
|
(cond
|
||||||
|
(= num lower_bound) (set output (get count_arr lower_bound))
|
||||||
|
(= num upper_bound) (set output (get count_arr upper_bound))
|
||||||
|
(set output 0))))
|
||||||
|
(cond
|
||||||
|
(> num (get data_arr mid)) (set lower_bound mid)
|
||||||
|
(< num (get data_arr mid)) (set upper_bound mid)
|
||||||
|
(do
|
||||||
|
(set output (get count_arr mid))
|
||||||
|
(set lo false)))
|
||||||
|
(set mid (math/floor (/ (+ lower_bound upper_bound) 2 )))))
|
||||||
|
output)
|
||||||
|
|
||||||
|
(defn similarity_score [ left right ]
|
||||||
|
(def [data_arr count_arr] (sort_and_deduplicate right))
|
||||||
|
(var output_score 0)
|
||||||
|
(for i 0 (- (length left) 1)
|
||||||
|
(do
|
||||||
|
(def temp (find_in_dedup_array (get left i) data_arr count_arr))
|
||||||
|
(def simi (* temp (get left i)))
|
||||||
|
(set output_score (+ output_score simi))))
|
||||||
|
output_score)
|
||||||
|
|
||||||
|
(defn main [script part filename]
|
||||||
(def input_arrays (read_data filename))
|
(def input_arrays (read_data filename))
|
||||||
(def left (get input_arrays 0))
|
(def [left right] input_arrays)
|
||||||
(def right (get input_arrays 1))
|
(cond
|
||||||
|
(compare= part "1") (do
|
||||||
(def distance (compute_distance left right))
|
(def distance (compute_distance left right))
|
||||||
(pp distance))
|
(pp distance))
|
||||||
|
(compare= part "2") (do
|
||||||
|
(def similar (similarity_score left right))
|
||||||
|
(pp similar))))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user