September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,24 +0,0 @@
|
|||
package require struct::list
|
||||
package require struct::set
|
||||
|
||||
# Make complete list of permutations of a string of characters
|
||||
proc allCharPerms s {
|
||||
set perms {}
|
||||
set p [struct::list firstperm [split $s {}]]
|
||||
while {$p ne ""} {
|
||||
lappend perms [join $p {}]
|
||||
set p [struct::list nextperm $p]
|
||||
}
|
||||
return $perms
|
||||
}
|
||||
|
||||
# The set of provided permutations (wrapped for convenience)
|
||||
set have {
|
||||
ABCD CABD ACDB DACB BCDA ACBD ADCB CDAB DABC BCAD CADB CDBA CBAD ABDC
|
||||
ADBC BDCA DCBA BACD BADC BDAC CBDA DBCA DCAB
|
||||
}
|
||||
# Get the real list of permutations...
|
||||
set all [allCharPerms [lindex $have 0]]
|
||||
# Find the missing one(s)!
|
||||
set missing [struct::set difference $all $have]
|
||||
puts "missing permutation(s): $missing"
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
package require struct::list
|
||||
package require struct::set
|
||||
|
||||
proc foreachPermutation {varName listToPermute body} {
|
||||
upvar 1 $varName v
|
||||
set p [struct::list firstperm $listToPermute]
|
||||
for {} {$p ne ""} {set p [struct::list nextperm $p]} {
|
||||
set v $p; uplevel 1 $body
|
||||
}
|
||||
}
|
||||
|
||||
proc findMissingCharPermutations {set} {
|
||||
set all {}
|
||||
foreachPermutation charPerm [split [lindex $set 0] {}] {
|
||||
lappend all [join $charPerm {}]
|
||||
}
|
||||
return [struct::set difference $all $set]
|
||||
}
|
||||
|
||||
set have {
|
||||
ABCD CABD ACDB DACB BCDA ACBD ADCB CDAB DABC BCAD CADB CDBA CBAD ABDC
|
||||
ADBC BDCA DCBA BACD BADC BDAC CBDA DBCA DCAB
|
||||
}
|
||||
set missing [findMissingCharPermutations $have]
|
||||
Loading…
Add table
Add a link
Reference in a new issue