+: is double, < is box (which in this example would throw a type error).
Other than that, ... using @. seems to be the way to go. Thanks, -- Raul On Thu, Jul 13, 2023 at 6:01 PM Henry Rich <henryhr...@gmail.com> wrote: > > +:`*:@.(1&p:) i. 20 NB. square the primes, double the nonprimes > 0 2 4 9 8 25 12 49 16 18 20 121 24 169 28 30 32 289 36 361 > > The rank of the result of the selector verb (1&p:) implies the cell-size > to be given to the verbs. For large arguments the cells to be fed into > each verb are collected into an array, so the verb must be able to > handle such an array of argument cells: > > <`*:@.(1&p:) i. 20 NB. square the primes, double the nonprimes > |rank error, executing monad (<`*:)@.(1&p:) > |each gerund must return a result whose shape agrees with its inputs > | <`*:@.(1&p:)i.20 > > < was passed an array of cells, but it didn't return a result for each cell. > > Hey, you did say 'efficiently'. > > Henry Rich > > On 7/13/2023 5:50 PM, Marcin Żołek wrote: > > Hello, > > I need to define a function that will execute function f on the elements of > > an input array that meet a certain condition, and execute function g on the > > other elements as in the following code in C. How to do this efficiently in > > J? > > > > for (i = 0; i < N; i++) { > > if (condition(input[i])) { > > output[i] = f(input[i]); > > } else { > > output[i] = g(input[i]); > > } > > } > > > > Martin > > ---------------------------------------------------------------------- > > 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