Raul, What causes the problem when you replace [ with 2 3 1 1 and ] by i.7 ? I thought it might work if I removed @ but it didn't help.
takecut=: [ (*@[ #inv ] </.~ +/\@[ I. #\@])(+/@[ {. ]) 2 3 1 1 takecut i.7 ┌───┬─────┬─┬─┐ │0 1│2 3 4│5│6│ └───┴─────┴─┴─┘ 2 3 1 1 (*@ 2 3 1 1 #inv (i.7) </.~ +/\@2 3 1 1 I. #\@(i.7))(+/@ 2 3 1 1 {. i.7) |domain error | 2 3 1 1(*@2 3 1 1#inv(i.7)</.~+/\@2 3 1 1 I.#\@(i.7))( +/@2 3 1 1{.i.7) Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul Miller Sent: Tuesday, September 18, 2012 10:12 AM To: programm...@jsoftware.com Subject: Re: [Jprogramming] cut y in segments of each size being x's items P.S. if you want to overtake (instead of length error when the right arg does not contain enough elements): takecut=: [ (*@[ #inv ] </.~ +/\@[ I. #\@]) (+/@[ {. ]) -- Raul On Tue, Sep 18, 2012 at 10:08 AM, Raul Miller <rauldmil...@gmail.com> wrote: > On Mon, Sep 17, 2012 at 11:14 PM, June Kim (김창준) <junea...@gmail.com> wrote: >> It's not so difficult. However, generalizing takecut into allowing 0 >> as an item in x seems complicated. That is, >> >> 3 0 2 2 takecut i.7 >> +-----++---+---+ >> |0 1 2||3 4|5 6| >> +-----++---+---+ >> 0 0 4 3 0 takecut i.7 >> +++-------+-----++ >> |||0 1 2 3|4 5 6|| >> +++-------+-----++ >> >> Any ideas for simple solutions? > > takecut=: *@[ #inv ] </.~ +/\@[ I. #\@] > 0 0 3 3 0 2 takecut i. 7 > ┌┬┬─────┬─────┬┬─┐ > │││0 1 2│3 4 5││6│ > └┴┴─────┴─────┴┴─┘ > > -- > Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm