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

Sean Charles (emacstheviking) objitsu at gmail.com
Wed Oct 4 17:17:23 AEDT 2023


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 <raoknz at gmail.com> 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) <objitsu at gmail.com <mailto:objitsu at gmail.com>> 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 <post at volker-wysk.de <mailto: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 <mailto: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 <mailto: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 <mailto:users at lists.mercurylang.org>
>> >>>>>> https://lists.mercurylang.org/listinfo/users
>> >>>>> 
>> >>>>> _______________________________________________
>> >>>>> users mailing list
>> >>>>> users at lists.mercurylang.org <mailto:users at lists.mercurylang.org>
>> >>>>> https://lists.mercurylang.org/listinfo/users
>> >>>> 
>> >>> 
>> >>> _______________________________________________
>> >>> users mailing list
>> >>> users at lists.mercurylang.org <mailto:users at lists.mercurylang.org>
>> >>> https://lists.mercurylang.org/listinfo/users
>> >> 
>> > 
>> 
>> _______________________________________________
>> users mailing list
>> users at lists.mercurylang.org <mailto:users at lists.mercurylang.org>
>> https://lists.mercurylang.org/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/users/attachments/20231004/6538b5cd/attachment-0001.html>


More information about the users mailing list