I would first trim all trailing spaces in pinv, test if length of any column in pinv is greater than that of pplinv, then there must be no match, otherwise adjust the length pinv as what you did and do comparison.
eg.
  +./ (dtb&.>p3) >&({:@$&>) pplinv
1
so that no match.

Sherlock, Ric wrote:
---Sherlock, Ric wrote
--bill lam wrote:
Sherlock, Ric wrote:
My solutions as follows:
   textend=: {:@$&.>@[ {."1&.> ]
   pplinv textend pinv
+-------+------+
|Joan   |Saxon |
+-------+------+

   pplinv tindexof pplinv textend pinv
4

A potential gotcha is that text in pinv is longer than pplinv, your solution will trim pinv to shorter length but there should
not be any
match because pinv is longer than pplinv. Of course if it is known before hand that pinv must be shorter than pplinv, there will be no problem.
Very true!

I think this solves that problem:
tindexof2=: ([,&.>]) tindexof {:@$&.>@([,&.>]) {."1&.>]

  p3=: 'Josephine';'Saxon'
  p3inv=: ifa mfv p3

Basically I append the names to be looked up to the lookup table and
then extend the names to be looked up by the widths of the appended
lookup table. The lookup is done on the appended table.
  ppl i. p3
500
  pplinv tindexof2 p3inv
500

Of course if there are more than 1 names to be looked up, the result may
include indices greater than #ppl, but will still provide the correct
answer to the normal "is found" test i.e. the resulting index is not
less than #ppl
  (#ppl)>  ppl i. p,p3
1 0
  (ttally pplinv)> pplinv tindexof2 pinv ,each p3inv
1 0

Performance is only a bit worse:
   ts '(tolower each pplinv) tindexof1 (tolower each p2inv)'
0.000125434936563 8320
   ts '(tolower each pplinv) tindexof2 (tolower each p2inv)'
0.000133257159779 8320
The phrase [,&.>] is used twice so I wonder if it is possible to
simplify tindexof2 further?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm



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

Reply via email to