# -*- tcl -*-
# test = create
set max 50
proc testA {list} {
if {[llength $list] == 0} {
return {}
}
if {[llength $list] == 1} {
return $list
}
foreach e $list {
set aa($e) .
}
array names aa
}
proc testB {list} {
if {[llength $list] == 0} {
return {}
}
if {[llength $list] == 1} {
return $list
}
set list [lsort $list]
set last [lindex $list 0]
set list [lrange $list 1 end]
set res $last
foreach e $list {
if {[string compare $e $last] != 0} {
lappend res $e
set last $e
}
}
return $res
}
proc testC {list} {
if {[llength $list] == 0} {
return {}
}
foreach e $list {
set $e .
}
unset list e
info locals
}
proc testD {list} {
if {[llength $list] == 0} {
return {}
}
foreach $list {.} {break}
unset list
info locals
}
set fa1 [open "|./2nep CR_A Ar.dat X.dat" w]
set fb1 [open "|./2nep CR_B Br.dat X.dat" w]
set fc1 [open "|./2nep CR_B Cr.dat X.dat" w]
set fd1 [open "|./2nep CR_B Dr.dat X.dat" w]
set fx [open "|./2nep CR_X X.dat" w]
set a0 {}
puts stdout " ______________________________________" ; flush stdout
puts stdout " CREA | ......A ......B ......C ......D" ; flush stdout
puts stdout " ______________________________________" ; flush stdout
for {set i 0} {$i <= $max} {incr i} {
set ix [format %03d $i]
puts stderr " * $ix (a0) = $a0" ; flush stderr
set ra1 [lindex [time {testA $a0} 1000] 0]
set rb1 [lindex [time {testB $a0} 1000] 0]
set rc1 [lindex [time {testC $a0} 1000] 0]
set rd1 [lindex [time {testD $a0} 1000] 0]
puts stdout " $ix | [format %7d $ra1] [format %7d $rb1] [format %7d $rc1] [format %7d $rd1]"
puts $fa1 $ra1
puts $fb1 $rb1
puts $fc1 $rc1
puts $fd1 $rd1
puts $fx $i
lappend a0 [string range [lindex [split [expr {rand()}] .] 1] 0 4]
}
puts stderr "----" ; flush stderr
puts stdout " ______________________________________" ; flush stdout
close $fa1
close $fb1
close $fc1
close $fd1
close $fxSee also SetOps.

