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