$10K coding deathmatch

Michael A. Cleverly michael at cleverly.com
Thu Nov 2 20:44:02 MST 2006


On 11/2/06, Andy Bradford <amb-plug at bradfords.org> wrote:
> By the way, here's a tally of runtimes on my PC:
>
> Python: .045ms on average
> Tcl [1]: .016ms on average
> Perl: .0125ms on average
>
> Looks like Perl wins out on speed. I didn't have PHP installed (who uses
> PHP for scripting anyways) so someone else may want to provide it.
>
> [1] Here's my unoptimized Tcl version:

Here is my Tcl version:

proc solve {} {
    fconfigure stdout -buffering full
    while {[gets stdin line] != -1} {
        set match_p 1
        foreach x [lrange $line 0 end-1] y [lrange $line 1 end] {
            if {$x == $y || abs($x - $y) >= [llength $line]} then {
                set match_p 0; break
            }
        }
        if {$match_p} then {puts "match"} else {puts "not a match"}
    }
}; solve

For really short amounts of input (such as the sample data) you'll get
slightly faster results by commenting out the first and last line
(#proc solve ... and #}; solve).

However, for the actual test, where I assume there would be a large
amount of input, the cost of byte-code compiling it by putting it in a
[proc] would be amortized/neglibile in relation to the speed increase.

Of course sadly thats all moot since Tcl isn't one of the chosen languages.

Michael



More information about the PLUG mailing list