Evaluated proc mix_colours str { set out $str; set c [lnull [uniq [loffset [regexp -inline -all {\x03(\d+)(,(\d+))*} $str] 1 2]]]; set c2 [shuf $c]; map [seq 0 [llength $c]] {x {set out [regsub -all [lindex $c $x] $out [lindex $c2 $x]]}}; . $out $c $c2 }