Sean, the data structures in J work brilliantly for mathematical array type problems.
When the data framework you are seeking is more “structured” (akin to Tables and Columns, or Keys and Values), then a more suited structure might require “jdb” for example (which makes use of boxing “tuples”). This is a J compatible structured database for tables and columns. It really depends on the problem you are solving, for example for Advent of Code or other coding challenges they are usually mathematical in nature and the J arrays are perfect, as they can be rectangular arrays (matrices etc) or nested arrays (boxed) so there is a lot of flexibility. With that in mind, I suggest learn the tools and then consider the structure depending on the nature of the problem, but they are pretty well all there for you to use. HTH Rob > On 7 Dec 2020, at 7:50 am, emacstheviking <[email protected]> wrote: > > Hauke, > Thanks for your comments. I have been scribbling notes on howto go about > it, my initial thoughts are that I need: > > genstar =: 3 : 0 > generates an array of random numbers: initial x, initial y, dy, type > > updstar =: 3 : 0 > in-place updates y by adding dy*timer interval > if y is off screen then randomly reset this entry with y=0 > > Ha! This is going to be a lot of fun... > > > > > On Sun, 6 Dec 2020 at 20:36, Hauke Rehr <[email protected]> wrote: > >> If the atoms of x, y and dy are all numbers (or tuples thereofª), >> you can use a 3(or moreª)×(whatever common shape they have) array. >> Index into them along the correct axes, and you’ll get >> back (or modify) a triplet (or triplets) (again, or moreª). >> >> And updating ought to be done in place as much as possible. >> You don’t do updating most of the time, but when you need to, >> do it in place if at all possible. >> You’re guaranteed to work in place if you immediately assign >> back to the name of the structure you amend, for example. >> Also, take a look at the special combinations. >> Personally, I avoid boxing as much as possible. >> >> Then again, that’s just my thoughts and I’m far from >> as experienced as the average person on this list, I guess. >> >> Am 06.12.20 um 21:13 schrieb emacstheviking: >>> What's the conventional wisdom / best practice on defining data >> structures >>> for an application? >>> >>> Given there is no explicit keyword/operator support like C (typdef, >>> struct) is it merely a case of convention and using boxed structures. I >>> have read several operators that can modify structures both as new >> aliased >>> copies and in-place modifications but I do not have the experience with J >>> to know what's efficient at run time in time / memory etc. >>> >>> My specific use case is that of a vertically scrolling star field... I >>> intend to recreate and hopeful extend the tiny little game I wrote but >>> never finished, screenshot here: >>> http://seancharles.xyz/posts/2019-10-06-all-at-c.html >>> >>> In that I had a struct that had the x, y, dy and type values but it seems >>> to me that given that J is all about arrays, it might be more efficient >>> using parallel arrays i.e. x array, y array, dy array etc. >>> >>> Also, given that the state is being updated in a tight event loop using >> the >>> time differential between frames to calculate the step motion (i.e. CPU >>> speed independently), what are your thoughts on immutable updates >> producing >>> new arrays or updating in place ? >>> >>> Thanks, >>> Sean. >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >> >> -- >> ---------------------- >> mail written using NEO >> neo-layout.org >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
