P.S., Hah I should have called it unique-by, it's too early in the morning!
P.P.S., I committed this word into sets.extras, with one small change besides the name which is to size the hash-set capacity by the length of the sequence. On Fri, Nov 18, 2016 at 6:54 AM, John Benediktsson <mrj...@gmail.com> wrote: > Maybe something like this: > > : duplicates-by ( seq quot: ( elt -- key ) -- seq' ) > HS{ } clone '[ @ _ ?adjoin ] filter ; inline > > Then you can use it: > > IN: scratchpad { 1 2 3 4 5 } [ 2/ ] duplicates-by > { 1 2 4 } > > IN: scratchpad sequence-of-tuples [ hash>> ] duplicates-by > > It would keep the first element that matches by key and drop all the > subsequent ones. > > > > On Fri, Nov 18, 2016 at 6:36 AM, Alexander Ilin <ajs...@yandex.ru> wrote: > >> Hello, all! >> >> I have an interesting little task for you today. >> >> Let's say you have a sequence of tuples, and you want to remove all >> tuples with duplicate ids, so that in the new sequence there is only one >> tuple with each id. >> >> Here's my solution: >> >> TYPED: dedupe-by-hash ( seq: sequence -- seq: sequence ) >> dup [ hash>> ] map >hash-set [ >> [ hash>> ] dip >> [ in? ] [ delete ] 2bi >> ] curry filter ; >> >> This is not the first time I'm solving this task, and I begun to wonder >> - is there something similar in the Factor library? >> >> Is this the simplest/most efficient implementation? >> >> Is it possible to generalize it to work for any slot like so: >> >> TYPED: dedupe-by-slot ( seq slot -- seq ) ? >> >> If this code is not in the standard library, how about adding it? Seems >> pretty useful, and not too trivial. >> >> What do you say? >> >> ---=====--- >> Александр >> >> ------------------------------------------------------------ >> ------------------ >> _______________________________________________ >> Factor-talk mailing list >> Factor-talk@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/factor-talk >> > >
------------------------------------------------------------------------------
_______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk