Find the missing permutation: Difference between revisions

Go solution
(Go solution)
Line 405:
s := "ABCD";
List(v, p -> List(p, i -> s[i]));</lang>
=={{header|Go}}==
Alternate method suggested by task description:
<lang go>package main
 
import (
"fmt"
"strings"
)
 
var given = strings.Split(`ABCD
CABD
ACDB
DACB
BCDA
ACBD
ADCB
CDAB
DABC
BCAD
CADB
CDBA
CBAD
ABDC
ADBC
BDCA
DCBA
BACD
BADC
BDAC
CBDA
DBCA
DCAB`, "\n", -1)
 
func main() {
b := make([]byte, len(given[0]))
for i := range b {
m := make(map[byte]int)
for _, p := range given {
m[p[i]]++
}
for char, count := range m {
if count&1 == 1 {
b[i] = char
break
}
}
}
fmt.Println(string(b))
}</lang>
Xor method suggested by Perl 6 contributor:
<lang go>func main() {
b := make([]byte, len(given[0]))
for _, p := range given {
for i, c := range []byte(p) {
b[i] ^= c
}
}
fmt.Println(string(b))
}</lang>
Output in either case:
<pre>
DBAC
</pre>
 
=={{header|Haskell}}==
1,707

edits