## Returns the negative of any decimal number passed to it. proc negate {number} { if {![regexp {^[+-]?(\d)+$} $number]} { return "fail" } else { return [expr {0 - $number}] } } } ## Converts a decimal number to a binary number proc toBinary {number} { set value 0; set power 0; set theList [list] while {$value < $myNumb} { incr power; set value [expr {pow(2,$power)}] } for {set i $power} {$i != -1} {incr i -1} { set value [expr {pow(2,$i)}] if {$myNumb >= $value} { lappend theList 1; set myNumb [expr {$myNumb - $value}] } else { lappend theList 0 } } return $theList } ## Works out the the factorial of a number ## i.e n * (n-1) * (n-2) * ( n-3)... * 1 proc factorial {number} { if {$number > 14} { set return 1.0 } else { set return 1 } while {$number > 0} { set return [expr {$return * $number}] incr number -1 } return $return } ## Works out the number of possible arrangements of a list (where the order does NOT matter) proc combinations {number selection} { set numerator [factorial $number] set denominator [expr {[factorial $selection] * [factorial [expr {$number - $selection}]]}] return [expr {$numerator / $denominator}] } ## Works out the number of possible arrangements of a list (where the order DOES matter) proc permutations {number selection} { set numerator [factorial $number] set denominator [factorial [expr {$number - $selection}]] return [expr {$numerator / $denominator}] } ## NOT YET COMPLETE proc iterative {formula dp {startvalue 1}} { set answers [list] while {1} { set current [expr {}] lappend answers [format %.${dp}f $current] } }