Using your approach, checking for consecutive matches at once
args =: 123334 122344 121212 111222 112122 filter =: #~ ((2#1) +./@E. }. = }:)@":"0 filter args 123334 111222 matrix =: ((2#1) E. }. = }:)@":"0 matrix args 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 Am 15.07.21 um 07:00 schrieb Arthur Anger:
Skip et al.-- "Cut" may indeed come to mind for examining consecutive digits. A more appropriate adverb, however, is "Infix": --Compare each pair of adjacent digits for equality --Examine each pair of adjacent comparisons (or longer groups for longer runs) for all 1's --Extract from the list those items which produce any all-1's (([: ([: +./ 2 */\ 2 =/\ ])"1 ":@,.@]) # ]) 123334 122344 121212 111222 11212 123334 111222 Another srategy is to use "Insert" to accumulate consecutive matches. Since the inserted verb operates on only the next leftward element and the prior accumulation, the returned value will show only the length of the leading string--unless the accumulation includes a list of the earlier counts. The inserted verb, therefore, counts repeated 1's, but resets to 0 for inequality, while appending the previous counts to the result. The positive items of the returned list may be examined for presence of a chosen value, the number of its occurrences (some implied in higher counts), or the maximal count. ((2 e. [: (] ,~ [ * {.@] + [)/ 0 , [: (}. = }:) ":@ ])"0 # ])] 123334 122344 121212 111222 112122 123334 111222 ((2 e."1 [: (] ,~ [ * {.@] + [)/"1 (0) ,~"1 [: (}. = }:)"1 ":@,.@]) # ])] 123334 122344 121212 111222 112122 123334 111222 (( [: (] ,~ [ * {.@] + [)/"1 (0) ,~"1 [: (}. = }:)"1 ":@,.@]) )] 123334 122344 121212 111222 112122 0 0 2 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2 1 0 2 1 0 1 0 0 0 1 0 The first version processes each number separately, the seond version saves a noticeable amount of time by performing the inserts in parallel. --Art ---------------------------------------------------------------------- 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