Evaluated proc mix_colours str { set out {}; set c [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] $str [lindex $c2 $x]]}}; . $out $c $c2 }