NB. Edushka:
p2=: ((#~[:(1&,*.,&1)2&(_1:>-/\))@[EMAIL PROTECTED]/)~

Very interesting, especially for searching
longer patterns.

Did you notice the speed behavior?

   20 (6!:2) '1 0 pattern in'
0.0211742
   20 (6!:2) '1 0 p2 in'
0.0220961

   20 (6!:2) '2 0 pattern in'
0.0204099
   20 (6!:2) '2 0 p2 in'
0.0121124

   20 (6!:2) '5 0 pattern in'
0.0205442
   20 (6!:2) '5 0 p2 in'
0.00946515


but there's a flaw:

   7 0 pattern dat

   7 0 p2 dat
|length error: p2
|   7 0     p2 dat

----------/\----------------------

Raul's could improve a bit by:
patRM17=: ([EMAIL PROTECTED])[EMAIL PROTECTED]&(0,0,~]){:@[=]

   20 (6!:2) '1 0 patRM17 in'
0.0159233
   20 (6!:2) '1 0 pattern in'
0.0212599


Here are 2 other (long-winded) variants:
(they are both based on the same principle)

pat171=:[:I.(1,_1,[EMAIL PROTECTED])E.2-~/\0,0,~]={:@[

faster one:

pat172=:[:<:[:I.(1,1,[EMAIL PROTECTED])E.[:(~:0,}:)0,0,~]={:@[

   7 0 pat172 dat

   1 0 pat172 dat
0 26
   1 4 pat172 dat
25
   2 5 pat172 dat
17

   20 (6!:2) '5 0 pat172 in'
0.0211791



=@@i

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to