Generating that list of numbers is trivial, compared to typical language processing.
Consider a classic "for" loop, which calls a function 100 times. Here, you are also generating 100 numbers. It's true that they are not stored in memory simultaneously, but you're also generating 100 stack frames, one after another -- and the cost of constructing those is significant. Writing to one memory location is less work than populating a typical stack frame. Also, in terms of actual memory consumed -- unless you're up in the megabytes, you aren't going to even notice it on modern machines. That said, if your concern is the *relevance* of the numbers, I'd go with something like: 1,.~? 100 $ ,: 2 1024 768 Which, looking at what Cliff Reiter suggested, is basically the same concept. Good luck, -- Raul On Thu, Dec 24, 2020 at 7:29 AM emacstheviking <[email protected]> wrote: > > Clifford, > > I don't like the boxing either, I also don't like the fact that generation > of a list of numbers that I don't even use (i. 100) just to call a function > N times was the only solution I could find. I almost don't ask questions > around here as it makes me feel even more stupid than I normally feel for > having to ask in the first place. > > Your solution is just another confirmation to me that the day J is more > ubiquitous than JavaScript is the same day that World Peace breaks out, > starvation ends, and we all live happily evert after. > > Thanks, I will study that single line of code very very closely. > > Sean. > > > On Thu, 24 Dec 2020 at 11:53, Clifford Reiter <[email protected]> wrote: > > > You might look at avoiding the boxing; for example > > > > ?10 # ,:3 1024 768 > > > > 1 259 473 > > > > 1 628 503 > > > > 0 672 357 > > > > 2 1003 559 > > > > 0 407 117 > > > > 2 620 116 > > > > 0 840 45 > > > > 2 581 444 > > > > 2 166 629 > > > > 1 217 202 > > > > > > > > > > > > On Thu, Dec 24, 2020 at 5:48 AM emacstheviking <[email protected]> wrote: > > > > > I have a simple verb that returns a list of randomised numbers > > > > > > stargen=: monad define > > > 'maxx maxy'=.y > > > (?2),(?maxx),(?maxy), 1 > > > ) > > > > > > For the life of me I have failed to just call it and create a table of > > the > > > results. > > > > > > Initially I tried 100 $ stargen 1024;768 but that just calls it once and > > > cycle repeats the same value one hundred times, close but no tobacco > > > related products in sight. > > > > > > Then I ended up with this version > > > > > > sg =: 3 : '(?2),(?100),(?100)' > > > sg2 =: 3 : '(?3),(?0{::y),(?1{::y),1' > > > > > > and the nearest I got to what I need is this: > > > > > > > (sg) each i. 10 > > > 0 53 53 > > > 0 52 25 > > > 0 38 96 > > > 1 92 75 > > > 0 31 47 > > > 1 87 65 > > > 1 74 11 > > > 0 30 75 > > > 0 4 51 > > > 1 64 99 > > > > > > but when I use the version that takes 1024;768 as the y value (sg2) I > > get a > > > domain error, > > > > > > > (sg2 1024;768) each i. 10 > > > |domain error > > > | >(sg2 1024;768) each i.10 > > > > > > each is defined as &.> which as I understand it (probably wrong) first > > > unboxes the list of integers 0..9 which wasn't even boxed in the first > > > place (but I am stuck, after all), after the unboxing it then does the &. > > > (under) which applies ....why am I tell you this, you know this. > > > > > > Eventually I considered making my verb (stargen) a dyad and tackling it > > > this way, which works: > > > > > > sg3 > > > 4 : '(?3),(?0{::x),(?1{::x),1' > > > > > > and running it like this: > > > > > > > (1024;768)&sg3 each i. 10 > > > 2 1013 257 1 > > > 0 251 127 1 > > > 2 957 732 1 > > > 0 508 263 1 > > > 2 358 340 1 > > > 2 1012 731 1 > > > 0 82 436 1 > > > 1 228 57 1 > > > 1 990 759 1 > > > 1 102 4 1 > > > > > > I just wanted a table of N rows of stargen output, passing in the current > > > window dimensions. Fail! :D > > > Looking for a better / neater / more J like way of doing this so I can > > > learn for future sessions. > > > > > > Thanks > > > Sean > > > ---------------------------------------------------------------------- > > > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
