2012-07-22 68 views
2
;; ------------------------- DICE COEFFS ------------------------ 

(defn dice-set-coeff [a b] 
    (* (/ (count (clojure.set/intersection a b)) 
     (+ (count a) (count b))) 
    2)) 

(defn dice-lst-coeff [a b] 
    (dice-set-coeff (set a) (set b))) 

;; ------------------------- BIGRAMS ---------------------------- 

(defn now-nxt [xs] 
    "im sure there is a better way to write this" 
    (map #(list %1 %2) xs (rest xs))) 

(defn bigram [xs] 
    (list now-nxt xs)) 

(defn dice-string-bigram [a b] 
    (dice-lst-coeff (bigram a) (bigram b))) 

为什么我在结果中得到1N?

tst.core> (dice-string-bigram "hello" "hello") 
1N 
tst.core> (dice-string-bigram "hello" "helap") 
1/2 
tst.core> (dice-string-bigram "hello" "howdy") 
0 
tst.core> (== (dice-string-bigram "hello" "hello") 1) 
true 

回答

5

1N是reader和REPL用于BigInts的语法。

其中一个调用返回bigint。


重:“我确定有一个更好的方式来写这个”

user> (now-nxt a) 
((\h \e) (\e \l) (\l \l) (\l \o)) 
user> (partition 2 1 a) 
((\h \e) (\e \l) (\l \l) (\l \o)) 
+0

布里尔,只需要知道我一直在寻找!谢谢 – beoliver 2012-07-22 21:06:22

+0

回复:'now-nxt'谢谢。 – beoliver 2012-07-22 22:14:32

相关问题