Jaccard index: Difference between revisions
Content added Content deleted
(Add Factor) |
(→{{header|Wren}}: Updated in line with task description.) |
||
Line 69: | Line 69: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
{{libheader|Wren-set}} |
{{libheader|Wren-set}} |
||
{{libheader|Wren-trait}} |
|||
{{libheader|Wren-fmt}} |
|||
Note that the Set object in the above module is implemented as a Map and consequently the iteration order (and the order in which elements are printed) is undefined. |
Note that the Set object in the above module is implemented as a Map and consequently the iteration order (and the order in which elements are printed) is undefined. |
||
<lang ecmascript>import "./set" for Set |
<lang ecmascript>import "./set" for Set |
||
import "./trait" for Indexed |
|||
import "./fmt" for Fmt |
|||
var jacardIndex = Fn.new { |a, b| |
var jacardIndex = Fn.new { |a, b| |
||
Line 77: | Line 81: | ||
} |
} |
||
var a = Set.new([ |
var a = Set.new([]) |
||
var b = Set.new([ |
var b = Set.new([1, 2, 3, 4, 5]) |
||
⚫ | |||
⚫ | |||
var d = Set.new([2, 4, 6, 8, 10]) |
|||
System.print("b = %(b)") |
|||
var e = Set.new([2, 3, 5, 7]) |
|||
⚫ | |||
var f = Set.new([8]) |
|||
var sets = [a, b, c, d, e, f] |
|||
for (se in Indexed.new(sets)) { |
|||
var i = se.index |
|||
var s = se.value |
|||
s = s.toList.sort() // force original sorted order |
|||
Fmt.print("$s = $n", String.fromByte(65 + i), s) |
|||
} |
|||
var pairs = [ |
|||
[a, b], [a, c], [a, d], [a, e], [a, f], [b, c], [b, d], [b, e], |
|||
[b, f], [c, d], [c, e], [c, f], [d, e], [d, f], [e, f] |
|||
] |
|||
var names = [ |
|||
"AB", "AC", "AD", "AE", "AF", "BC", "BD", "BE", |
|||
"BF", "CD", "CE", "CF", "DE", "DF", "EF" |
|||
] |
|||
⚫ | |||
for (se in Indexed.new(pairs)) { |
|||
var n = names[se.index] |
|||
var ss = se.value |
|||
⚫ | |||
}</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
A = [] |
|||
⚫ | |||
B = [1, 2, 3, 4, 5] |
|||
C = [1, 3, 5, 7, 9] |
|||
⚫ | |||
D = [2, 4, 6, 8, 10] |
|||
E = [2, 3, 5, 7] |
|||
F = [8] |
|||
J(A, B) = 0 |
|||
J(A, C) = 0 |
|||
J(A, D) = 0 |
|||
J(A, E) = 0 |
|||
J(A, F) = 0 |
|||
J(B, C) = 0.428571 |
|||
J(B, D) = 0.25 |
|||
⚫ | |||
J(B, F) = 0 |
|||
J(C, D) = 0 |
|||
J(C, E) = 0.5 |
|||
J(C, F) = 0 |
|||
J(D, E) = 0.125 |
|||
J(D, F) = 0.2 |
|||
J(E, F) = 0 |
|||
</pre> |
</pre> |