Re: [m-users.] lists and sets, unordered or ordered.
"Sean Charles (emacstheviking)" <[email protected]>
| Newsgroups | gmane.comp.lang.mercury.general |
|---|---|
| Message-ID | <[email protected]> |
Richard, Volker, It's always intriguing to me to find out what one of my silly questions brings out into the world! For now, given that I am using non in-place memory updating, and I am still managing 60FPS and I just keep piling on the code... I am moving on! I've settled for my first approach, 'set' and so what if the list is ordered, it's being helpful! I remember writing a visual bubble sort in BASIC on a Research Machines 280-z once... it was magic watching numbers sort themselves out in front of your eyes. Oops, another tangential digression.... thanks again, I love this list! Sean > On 4 Oct 2023, at 03:34, Richard O'Keefe <[email protected]> wrote: > > I did some benchmarks years ago to figure out when it was worth sorting > lists in order to do set operations on them , and when it was OK to keep > them unordered. It has been a long time, but I was shocked at how tiny > the crossover point was. The takeaway lesson was that there was just > no point in using unordered lists for sets. If your data were so small > that unordered lists were good enough, they were too small for the cost > of sorting to be worth bothering about. > > On Wed, 4 Oct 2023 at 10:16, Sean Charles (emacstheviking) <[email protected] <mailto:[email protected]>> wrote: >> It doesn't need to be unsorted, I just didn't want to waste time sorting something that can function unsorted that's all. >> >> > 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 <[email protected] <mailto:[email protected]>> 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 <[email protected] <mailto:[email protected]>> 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 <[email protected] <mailto:[email protected]>> 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 >> >>>>>> [email protected] <mailto:[email protected]> >> >>>>>> https://lists.mercurylang.org/listinfo/users >> >>>>> >> >>>>> _______________________________________________ >> >>>>> users mailing list >> >>>>> [email protected] <mailto:[email protected]> >> >>>>> https://lists.mercurylang.org/listinfo/users >> >>>> >> >>> >> >>> _______________________________________________ >> >>> users mailing list >> >>> [email protected] <mailto:[email protected]> >> >>> https://lists.mercurylang.org/listinfo/users >> >> >> > >> >> _______________________________________________ >> users mailing list >> [email protected] <mailto:[email protected]> >> https://lists.mercurylang.org/listinfo/users _______________________________________________ users mailing list [email protected] https://lists.mercurylang.org/listinfo/users