Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
21
Task/Combinations/Tcl/combinations.tcl
Normal file
21
Task/Combinations/Tcl/combinations.tcl
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
proc comb {m n} {
|
||||
set set [list]
|
||||
for {set i 0} {$i < $n} {incr i} {lappend set $i}
|
||||
return [combinations $set $m]
|
||||
}
|
||||
proc combinations {list size} {
|
||||
if {$size == 0} {
|
||||
return [list [list]]
|
||||
}
|
||||
set retval {}
|
||||
for {set i 0} {($i + $size) <= [llength $list]} {incr i} {
|
||||
set firstElement [lindex $list $i]
|
||||
set remainingElements [lrange $list [expr {$i + 1}] end]
|
||||
foreach subset [combinations $remainingElements [expr {$size - 1}]] {
|
||||
lappend retval [linsert $subset 0 $firstElement]
|
||||
}
|
||||
}
|
||||
return $retval
|
||||
}
|
||||
|
||||
comb 3 5 ;# ==> {0 1 2} {0 1 3} {0 1 4} {0 2 3} {0 2 4} {0 3 4} {1 2 3} {1 2 4} {1 3 4} {2 3 4}
|
||||
Loading…
Add table
Add a link
Reference in a new issue