package main
import (
"fmt"
"math/rand"
"time"
)
func bogosort(scrambled, sorted string) int {
attempts := 0
ch := make(chan int)
sort_routine := func(ch chan int) {
sort_attempt := ""
perm
:= rand.
Perm(len
(scrambled
))
for _, rand_pos := range perm {
sort_attempt += string(scrambled[rand_pos])
}
if sort_attempt == sorted {
ch <- 1
} else {
ch <- 0
}
}
go sort_routine(ch)
for result := range ch {
if result == 0 {
attempts++
go sort_routine(ch)
} else {
close(ch)
}
}
return attempts
}
func main() {
attempts := bogosort("lolhe", "hello")
fmt.Printf("%v iterations", attempts)
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJtYXRoL3JhbmQiCgkidGltZSIKKQoKZnVuYyBib2dvc29ydChzY3JhbWJsZWQsIHNvcnRlZCBzdHJpbmcpIGludCB7CglhdHRlbXB0cyA6PSAwCgljaCA6PSBtYWtlKGNoYW4gaW50KQoKCXNvcnRfcm91dGluZSA6PSBmdW5jKGNoIGNoYW4gaW50KSB7CgkJcmFuZC5TZWVkKHRpbWUuTm93KCkuVW5peE5hbm8oKSkKCQlzb3J0X2F0dGVtcHQgOj0gIiIKCQlwZXJtIDo9IHJhbmQuUGVybShsZW4oc2NyYW1ibGVkKSkKCgkJZm9yIF8sIHJhbmRfcG9zIDo9IHJhbmdlIHBlcm0gewoJCQlzb3J0X2F0dGVtcHQgKz0gc3RyaW5nKHNjcmFtYmxlZFtyYW5kX3Bvc10pCgkJfQoKCQlpZiBzb3J0X2F0dGVtcHQgPT0gc29ydGVkIHsKCQkJY2ggPC0gMQoJCX0gZWxzZSB7CgkJCWNoIDwtIDAKCQl9Cgl9CgoJZ28gc29ydF9yb3V0aW5lKGNoKQoJZm9yIHJlc3VsdCA6PSByYW5nZSBjaCB7CgkJaWYgcmVzdWx0ID09IDAgewoJCQlhdHRlbXB0cysrCgkJCWdvIHNvcnRfcm91dGluZShjaCkKCQl9IGVsc2UgewoJCQljbG9zZShjaCkKCQl9Cgl9CglyZXR1cm4gYXR0ZW1wdHMKfQoKZnVuYyBtYWluKCkgewoJYXR0ZW1wdHMgOj0gYm9nb3NvcnQoImxvbGhlIiwgImhlbGxvIikKCWZtdC5QcmludGYoIiV2IGl0ZXJhdGlvbnMiLCBhdHRlbXB0cykKfQ==