Posted to tcl by Zarutian at Fri Nov 16 02:29:09 GMT 2007view pretty
proc create {deck} { upvar $deck d foreach type {S H D C} { foreach value {A 2 3 4 5 6 7 8 9 10 J Q K} { lappend cards [set value][set type] } } while {[llength $cards]} { set item [lpick $cards] lappend d $item lremove cards $item } } proc lpick {list} { return [lindex $list [expr int(rand()*[llength $list])]] } proc lremove {var item} { upvar $var v set t [lsearch -exact $v $item] set v [lreplace $v $t $t] }