math.extras: adding majority vote algorithm.
parent
31d6fb178a
commit
3ce93bf86f
extra/math/extras
|
@ -80,3 +80,12 @@ IN: math.extras.test
|
|||
|
||||
{ { 1 8+4/5 16+3/5 24+2/5 32+1/5 } } [ 1 40 5 linspace[a,b) >array ] unit-test
|
||||
{ { 1 10+3/4 20+1/2 30+1/4 40 } } [ 1 40 5 linspace[a,b] >array ] unit-test
|
||||
|
||||
[ f ] [ { } majority ] unit-test
|
||||
[ 1 ] [ { 1 } majority ] unit-test
|
||||
[ f ] [ { 1 2 } majority ] unit-test
|
||||
[ 1 ] [ { 1 1 2 } majority ] unit-test
|
||||
[ f ] [ { 1 1 2 2 } majority ] unit-test
|
||||
[ 2 ] [ { 1 1 2 2 2 } majority ] unit-test
|
||||
[ 3 ] [ { 1 2 3 1 2 3 1 2 3 3 } majority ] unit-test
|
||||
{ CHAR: C } [ "AAACCBBCCCBCC" majority ] unit-test
|
||||
|
|
|
@ -222,3 +222,10 @@ PRIVATE>
|
|||
|
||||
: logspace[a,b] ( a b length base -- seq )
|
||||
[ linspace[a,b] ] dip swap n^v ;
|
||||
|
||||
: majority ( seq -- elt/f )
|
||||
[ f 0 ] dip [
|
||||
over zero? [ 2nip 1 ] [
|
||||
pick = [ 1 + ] [ 1 - ] if
|
||||
] if
|
||||
] each zero? [ drop f ] when ;
|
||||
|
|
Loading…
Reference in New Issue