With Joel's script, slightly modified:

buffer: []
t0: now/time/precise
foreach item read/lines %test.txt [
    nr: to-integer copy/part next item 3
    while [
        nr > length? buffer
    ][
        insert/only tail buffer copy []
    ]
    append buffer/:nr item
]
t1: now/time/precise
print to-decimal t1 - t0
halt

I unfortunately, get:

** Script Error: Invalid argument:
** Where: to-integer
** Near: to integer! :value
>>

I think that's because of the couple of empty lines at the end.

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

----- Original Message ----- 
From: "Joel Neely" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, September 07, 2002 11:29 AM
Subject: [REBOL] Re: Sort by first part of line


> Hi, Louis, and everybody,
> 
> I've been covered up, so I may have missed something, but here's my
> suggestion for a different approach (forgive me if somebody has 
> mentioned this already or if I've misunderstood the problem!)
> 
> "Louis A. Turk" wrote:
> > 
> 
> > Anyway, here is the data to be sorted if perchance it might be
> > useful for timing purposes (691KB):
> > 
> > http://www.pusatberita.com/test.txt
> > 
> 
> After glancing at your data, I decided to try a version that just
> eliminates the sorting entirely.  Let me restate the problem in
> that fashion.  We have:
> 
> -  a file of text lines, each of which contains:
>    -  a single space
>    -  a three digit number (with zero padding on the left)
>    -  a single space
>    -  some words
> 
> and we desire
> 
> -  the lines rearranged by the leading number, but otherwise in
>    the same order as the original data.
> 
> Since there are relatively few three-digit integers, I thought I'd
> try setting up a collection of blocks, so that block 1 will hold
> all lines beginning with 001, block 2 will hold all lines beginning
> with 002, etc.  Here's the code, including timers...
> 
> 8<--------
> 
> REBOL []
> 
> buffer: []
> 
> t0: now/time/precise
> 
> foreach item read/lines %pusatberita.text [
>     nr: to-integer copy/part next item 3
>     while [
>         nr > length? buffer
>     ][
>         insert/only tail buffer copy []
>     ]
>     append buffer/:nr item
> ]
> 
> t1: now/time/precise
> 
> print to-decimal t1 - t0
> 
> 8<--------
> 
> When I run the above on my desk at work, using a downloaded copy
> of your data, it takes about one second.  To iterate through the
> data lines in the desired order, we can do something like
> 
>     foreach group buffer [
>         foreach line group [
>             print line  ;; or whatever you wish to do with it
>         ]
>     ]
> 
> Someone who's already been benchmarking might try comparing this
> with what's already been proposed, using the data from your web
> site.
> 
> -jn-
> -- 
> To unsubscribe from this list, please send an email to
> [EMAIL PROTECTED] with "unsubscribe" in the 
> subject, without the quotes.
> 

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to