if you want the index rather than the coordinate values, then

(1 i.~ f) y

will "short circuit" to the first 1

and 

({~ 1 i.~ f)

may be faster to get first coordinates than my original solution, though errors 
if there are no items with 1 = f




On Friday, October 21, 2022 at 12:55:41 p.m. EDT, 'Pascal Jasmin' via 
Programming <programm...@jsoftware.com> wrote: 





}.^:(0 = f@{.)^:_

will return the list with the head being the first f not equal 0.






On Friday, October 21, 2022 at 12:19:41 p.m. EDT, Ed Gottsman 
<edward.j.gotts...@gmail.com> wrote: 





Hi.  I’m blanking on something basic and research isn’t helping.  When the 
blindingly obvious solution is revealed I will blame a combination of sleep 
deprivation and senescence.

I’ve got a long list of coordinates ordered by desirability.  I want to invoke 
f (a custom script) with each coordinate in turn.  f may return 0 (failure), in 
which case I want to invoke it again with the next coordinate.  When f 
(eventually) returns 1, I want to terminate—the remainder of the coordinates 
should not be processed.  (Note that the very first invocation of f may return 
1.)

This *almost* feels like ^: in its Do While form.  Almost.  It also feels like 
SCs around list operations (though they seem to be limited to primitives).

Help.

Many thanks.

Ed

Sent from my iPad
----------------------------------------------------------------------
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

Reply via email to