sets.extras: adding non-repeating.

db4
John Benediktsson 2013-05-02 16:36:43 -07:00
parent c35586e347
commit 1a762e5ac5
2 changed files with 13 additions and 1 deletions

View File

@ -18,3 +18,7 @@ IN: sets.extras.tests
{ f } [ { 1 2 } { 1 2 } proper-subset? ] unit-test
{ f } [ { 1 2 3 } { 1 2 } proper-subset? ] unit-test
{ t } [ { 1 2 } { 1 2 3 } proper-subset? ] unit-test
{ "abc" } [ "abc" non-repeating ] unit-test
{ "abc" } [ "abcddd" non-repeating ] unit-test
{ "" } [ "aabbcc" non-repeating ] unit-test

View File

@ -1,6 +1,6 @@
! Copyright (C) 2013 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: kernel sequences sets ;
USING: kernel locals sequences sets ;
IN: sets.extras
: setwise-xor ( seq1 seq2 -- set )
@ -17,3 +17,11 @@ IN: sets.extras
: disjoint? ( set1 set2 -- ? )
intersects? not ;
:: non-repeating ( seq -- seq' )
HS{ } clone :> visited
0 seq new-resizable :> accum
seq [
accum over visited ?adjoin
[ push ] [ remove! drop ] if
] each accum seq like ;