[m-users.] lists and sets, unordered or ordered.

Volker Wysk post at volker-wysk.de
Wed Oct 4 16:44:28 AEDT 2023


Am Dienstag, dem 03.10.2023 um 22:15 +0100 schrieb Sean Charles
(emacstheviking):
> It doesn't need to be unsorted, I just didn't want to waste time sorting something that can function unsorted that's all.

When you need it to be deduped, you probably need to do it sorted, or you
get quadratic complexity. The set_* modules, except for set_unordlist,
should be using an internal serach tree. This should be *somewhat* slower
than set or set_unordlist, for a small number of elements.

The question is, for how many elements this carries weight. You could try
set and, for instance, set_ctree234, and compare the speed. But I doubt it
will noticable. 

Cheers,
Volker

> 
> > With the the set_c234.to_sorted_list/1
> 
> 
> ^^^^^^ That's sorted though, by it's very name and the power of Greyskull etc?
> 
> 
> 
> > On 3 Oct 2023, at 22:13, Volker Wysk <post at volker-wysk.de> wrote:
> > 
> > Am Dienstag, dem 03.10.2023 um 22:07 +0100 schrieb Sean Charles
> > (emacstheviking):
> > > In my detection, the same missile might hit more than one object if they
> > > are close: thus I only wanted to process it once even of it hits five
> > > things, so I wanted deduped list just to save setting the hit flag five
> > > times if that makes sense.
> > > 
> > > I checked out all the others sets, the only one I saw that looked good was
> > > set_unordlist but is says 'may contain duplicates'.
> > > 
> > > How do I get an unsorted deduped list from a set then, educate me, i sure
> > > as hell need it!
> > 
> > With the the set_c234.to_sorted_list/1 function, for instance. I still don't
> > know why your set needs to be unsorted.
> > 
> > V.
> > 
> > > 
> > > HAHA It's possible I have missed it in the melee, like 'cirle' not 'circle' las week, it's late, I'm tired
> > > :D
> > > 
> > > > On 3 Oct 2023, at 22:04, Volker Wysk <post at volker-wysk.de> wrote:
> > > > 
> > > > Hi
> > > > 
> > > > You can get a sorted de-duped list from a set. Why do you need an unsorted
> > > > one? If it's efficiency, you need to have it sorted, unless you have only a
> > > > few elements.
> > > > 
> > > > But be aware that there is the "set" module and five "set_*" modules. The
> > > > "set" is using ordered lists. That's inefficient for large sets. Use the
> > > > other modules when you have a big set.
> > > > 
> > > > Cheers,
> > > > Volker
> > > > 
> > > > Am Dienstag, dem 03.10.2023 um 21:55 +0100 schrieb Sean Charles
> > > > (emacstheviking):
> > > > > Indeed. nothing in my drafts folder and I swear it was complete before I hit send... well,
> > > > > basically,
> > > > > is there a reason you can't get an unsorted de-duped list from a set?
> > > > > 
> > > > > That's all...   :D
> > > > > 
> > > > > > On 3 Oct 2023, at 21:53, Volker Wysk <post at volker-wysk.de> wrote:
> > > > > > 
> > > > > > Hi, Sean
> > > > > > 
> > > > > > Your message suddenly stops in the middle of a sentence.
> > > > > > 
> > > > > > Volker
> > > > > > 
> > > > > > Am Dienstag, dem 03.10.2023 um 21:39 +0100 schrieb Sean Charles
> > > > > > (emacstheviking):
> > > > > > > I've just completed a generic typeclass based collision detection system and learned quite a bit doing it!
> > > > > > > 
> > > > > > > As I was reading the module docs, it seems that there is no 'unordered set without duplicates' unless I missed it, which is entirely reasonable.
> > > > > > > 
> > > > > > > The output from the collision detection  is two sets of integers, these are the identifiers of the missiles and the things that were hit at the moment. I now want to take this list and then set the '^hit' flag for every missile in that list, for example, the existing code will then no longer render it and remove it on the next iteration.
> > > > > > > 
> > > > > > > I used sets because they de-dupe as you go, meaning that my checking process is simply iterating two loops, m x n, m missiles and n moving targets, for now it is naive and will probably always be fine given the limited numbers of things on screen at any one time.
> > > > > > > 
> > > > > > > There seems to be no way to get an unordered, deduplicated list from a set, I can use set_unordlist but that leaves duplicates.
> > > > > > > 
> > > > > > > 
> > > > > > > For now I've decided to use set_unordlist, at the cost of maybe updating the same missile record more than once poost-collision detection, it's not going to kill anything really but mentally, and from a purity point of view it feels 'less optimal' than I wanted. Failing that I might just usr  list.member and use lists for everything like I did!
> > > > > > > 
> > > > > > > I just wondered what the reasons were for not having the ability to get an unsorted 
> > > > > > > _______________________________________________
> > > > > > > users mailing list
> > > > > > > users at lists.mercurylang.org
> > > > > > > https://lists.mercurylang.org/listinfo/users
> > > > > > 
> > > > > > _______________________________________________
> > > > > > users mailing list
> > > > > > users at lists.mercurylang.org
> > > > > > https://lists.mercurylang.org/listinfo/users
> > > > > 
> > > > 
> > > > _______________________________________________
> > > > users mailing list
> > > > users at lists.mercurylang.org
> > > > https://lists.mercurylang.org/listinfo/users
> > > 
> > 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.mercurylang.org/archives/users/attachments/20231004/39f64517/attachment.sig>


More information about the users mailing list