At first glance, it looks like you might save some time by grabbing 
interestArray[uID][T] as soon as you have T, and then use what you grabbed in 
the 3 later places instead of re-figuring interestArray[uID][T] each time.

As in:
repeat for each line T in the keys of interestArray[uID]
     put interestArray[uID][T] into AuT —- grab it here
     repeat for each line S in storyArray[T]
        if abs(item 2 of S - item 1 of AuT) < 20 \
              and userSeenArray[uID][item 1 of S] < 4
        then put (101 + userSeenArray[uID][item 1 of S] * 30 + 5 * \
              abs(item 2 of S - item 1 of AuT) - \
              item 2 of AuT),T,S & cr after candidateList
     end repeat
  end repeat
  sort lines of candidateList numeric by random(item 1 of each)

It looks like you could do a similar thing with userSeenArray[uID][item 1 of S] 
to avoid repeating the same calculation.
Also with item 1 of AuT, and item 2 of S, with lesser gains but while you’re at 
it…
That all will make it easier (or harder) to read, depending on if you can find 
descriptive variable names for the intermediate values.

It won’t help the sort speed, but saves a lot of array un-hashing.
I haven’t figured out what the algoraithm is doing, or the idea of the 
randomness in the sort.

All untested, of course!
Cheers,
Jerry

> On Jun 11, 2018, at 5:21 PM, Geoff Canyon via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> My first pass at the routine looked roughly like this:
> 
>   repeat for each line T in the keys of interestArray[uID]
>      repeat for each line S in storyArray[T]
>         if abs(item 2 of S - item 1 of interestArray[uID][T]) < 20 \
>               and userSeenArray[uID][item 1 of S] < 4
>         then put (101 + userSeenArray[uID][item 1 of S] * 30 + 5 * \
>               abs(item 2 of S - item 1 of interestArray[uID][T]) - \
>               item 2 of interestArray[uID][T]),T,S & cr after candidateList
>      end repeat
>   end repeat
>   sort lines of candidateList numeric by random(item 1 of each)


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to