Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var count int = 0
|
||||
|
||||
func interactiveCompare(s1, s2 string) bool {
|
||||
count++
|
||||
fmt.Printf("(%d) Is %s < %s? ", count, s1, s2)
|
||||
var response string
|
||||
_, err := fmt.Scanln(&response)
|
||||
return err == nil && strings.HasPrefix(response, "y")
|
||||
}
|
||||
|
||||
func main() {
|
||||
items := []string{"violet", "red", "green", "indigo", "blue", "yellow", "orange"}
|
||||
|
||||
var sortedItems []string
|
||||
|
||||
// Use a binary insertion sort to order the items. It should ask for
|
||||
// close to the minimum number of questions required
|
||||
for _, item := range items {
|
||||
fmt.Printf("Inserting '%s' into %s\n", item, sortedItems)
|
||||
// sort.Search performs the binary search using interactiveCompare to
|
||||
// rank the items
|
||||
spotToInsert := sort.Search(len(sortedItems), func(i int) bool {
|
||||
return interactiveCompare(item, sortedItems[i])
|
||||
})
|
||||
sortedItems = append(sortedItems[:spotToInsert],
|
||||
append([]string{item}, sortedItems[spotToInsert:]...)...)
|
||||
}
|
||||
fmt.Println(sortedItems)
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var count int = 0
|
||||
|
||||
type sortable []string
|
||||
func (s sortable) Len() int { return len(s) }
|
||||
func (s sortable) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (s sortable) Less(i, j int) bool {
|
||||
s1, s2 := s[i], s[j]
|
||||
count++
|
||||
fmt.Printf("(%d) Is %s < %s? ", count, s1, s2)
|
||||
var response string
|
||||
_, err := fmt.Scanln(&response)
|
||||
return err == nil && strings.HasPrefix(response, "y")
|
||||
}
|
||||
|
||||
func main() {
|
||||
items := sortable{"violet", "red", "green", "indigo", "blue", "yellow", "orange"}
|
||||
sort.Sort(items)
|
||||
fmt.Println(items)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue