{ 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
! 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 )
: 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 ;