脑筋急转弯:我自己提出了这个问题,但完全卡住了。
我想创建所有字符的所有可能组合,但具有所有可能的长度。假设,[az] 组合 1 个长度,然后 [az] 组合 2 个长度,依此类推,直到达到最大长度。
这可以通过迭代循环很容易地完成。
3 长度的示例:
proc triples list {
foreach i $list {
foreach j $list {
foreach k $list {
puts [list $i $j $k]
}
}
}
}
但是,它应该使用更少的循环来解决(循环需要是动态的)
set chars "abcdefghijklmnopqrstuvwxyz"
set chars [split $chars ""]
set complete_length [llength $chars]
set start 0
set maximum_length 15
while {1} {
if {$start > $maximum_length} {
break
}
for {set i [expr $maximum_length-$start]} {$i >= 0} {incr i -1} {
# dump combinations
}
incr start
}
在这个块中,我应该应用什么算法或方法?任何类型的建议/帮助/代码将不胜感激。