Find the missing permutation: Difference between revisions

Content added Content deleted
(Added TI-83 BASIC)
(Added Wren)
Line 3,133: Line 3,133:
{{Out}}
{{Out}}
<pre>DBAC</pre>
<pre>DBAC</pre>

=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-set}}
<lang ecmascript>import "/set" for Set

var permute // recursive
permute = Fn.new { |input|
if (input.count == 1) return [input]
var perms = []
var toInsert = input[0]
for (perm in permute.call(input[1..-1])) {
for (i in 0..perm.count) {
var newPerm = perm.toList
newPerm.insert(i, toInsert)
perms.add(newPerm)
}
}
return perms
}

var missingPerms = Fn.new { |input, perms|
var s1 = Set.new()
s1.addAll(perms)
var perms2 = permute.call(input).map { |p| p.join() }
var s2 = Set.new()
s2.addAll(perms2)
return s2.except(s1).toList
}

var input = ["A", "B", "C", "D"]
var perms = [
"ABCD", "CABD", "ACDB", "DACB", "BCDA", "ACBD", "ADCB", "CDAB",
"DABC", "BCAD", "CADB", "CDBA", "CBAD", "ABDC", "ADBC", "BDCA",
"DCBA", "BACD", "BADC", "BDAC", "CBDA", "DBCA", "DCAB"
]
var missing = missingPerms.call(input, perms)
if (missing.count == 1) {
System.print("The missing permutation is %(missing[0])")
} else {
System.print("There are %(missing.count) missing permutations, namely:\n")
System.print(missing)
}</lang>

{{out}}
<pre>
The missing permutation is DBAC
</pre>


=={{header|XPL0}}==
=={{header|XPL0}}==