The sequence is generated by following this pseudo-code:

A:  The first term is zero.
    Repeatedly apply:
        If the last term is *new* to the sequence so far then:
B:          The next term is zero.
        Otherwise:
C:          The next term is how far back this last term occured previously.



Example

Using A:

0
Using B:

0 0
Using C:

0 0 1
Using B:

0 0 1 0
Using C: (zero last occurred two steps back - before the one)

0 0 1 0 2
Using B:

0 0 1 0 2 0
Using C: (two last occurred two steps back - before the zero)

0 0 1 0 2 0 2 2
Using C: (two last occurred one step back)

0 0 1 0 2 0 2 2 1
Using C: (one last appeared six steps back)

0 0 1 0 2 0 2 2 1 6
...



Task

 Create a function/procedure/method/subroutine/... to generate the Van Eck sequence of numbers.
 Use it to display here, on this page:
 The first ten terms of the sequence.
 Terms 991 - to - 1000 of the sequence.


References

 Don't Know (the Van Eck Sequence) - Numberphile video.
 Wikipedia Article: Van Eck's Sequence.
  OEIS sequence: A181391.


/* Fill array with Van Eck sequence */
proc nonrec make_eck([*] word eck) void:
    int i, j, max;
    max := dim(eck,1)-1;
    for i from 0 upto max do eck[i] := 0 od;
 
    for i from 0 upto max-1 do
        j := i - 1;
        while j >= 0 and eck[i] ~= eck[j] do
            j := j - 1
        od;
        if j >= 0 then
            eck[i+1] := i - j
        fi
    od
corp
 
/* Print eck[0..9] and eck[990..999] */
proc nonrec main() void:
    word i;
    [1000] word eck;
    make_eck(eck);
 
    for i from 0 upto 9 do write(eck[i]:4) od;
    writeln();
    for i from 990 upto 999 do write(eck[i]:4) od;
    writeln()
corp