Hi Sunanda, here is my tea break result:
find-longest-run: function [ [catch] data-array [block!] ] [ longest-run-size longest-run-start size position number ] [ if empty? data-array [throw make error! "a non-empty array expected"] longest-run-start: position: back tail data-array longest-run-size: size: 1 while [not head? position] [ if not number? first position [throw make error! "an integer array expected"] number: first position position: back position either (first position) = (number - 1) [ size: size + 1 if size >= longest-run-size [ longest-run-size: size longest-run-start: position ] ] [size: 1] ] reduce [longest-run-size longest-run-start] ] -L ----- Original Message ----- > Here's a little problem I needed an answer to yesterday. > > As I needed the answer yesterday, I hacked together some code. But there has > got to be a more elegant way, surely. Maybe using parse on a block? > > The problem is this......You have a block containing integers, like this: > > sparse-array: [ 12 13 14 15 16 17 > 7 8 > 20 21 22 23 24 25 26 > 19 > 59 58 57 56 55 54 53 52 > 20 21 22 23 > 101 102 103 104 105 106 107 > ] > > They are not in ascending order, and there are some numbers duplicated. But > there are runs of consecutive, ascending integers: 12--17, 7--8 etc. We want > to find the location in the block of the first longest, such sequence. > > The answer for this dataset is 20--26. 101--107 is as long, but isn't the > first. 59--52 is longer, but it is descending. > > My solution is below. Someone can do better, surely! > > Thanks, > Sunanda > -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.