頭の体操: この質問は自分で考えたのですが、完全に行き詰まってしまいました。
すべての文字の可能なすべての組み合わせを作成したいのですが、すべての可能な長さです。1 つの長さの [az] の組み合わせ、次に 2 つの長さの [az] の組み合わせというように、最大の長さに達するまで続けます。
これは、反復ループによって非常に簡単に実行できます。
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
}
このチャンクでは、どのアルゴリズムまたはメソッドを適用する必要がありますか? あらゆる種類の提案/ヘルプ/コードをいただければ幸いです。