Skip to content

Instantly share code, notes, and snippets.

@rjeczalik
Last active August 29, 2015 14:03
Show Gist options
  • Save rjeczalik/23a917eb54e7d475b82d to your computer and use it in GitHub Desktop.
Save rjeczalik/23a917eb54e7d475b82d to your computer and use it in GitHub Desktop.
fixture: licstat/scheduler/queue_test.go
package main
import (
"fmt"
"math/rand"
"os"
"strconv"
"time"
)
func die(v interface{}) {
fmt.Fprintln(os.Stderr, v)
os.Exit(1)
}
var usage = "usage: queue_test <count>"
func init() {
rand.Seed(time.Now().UnixNano())
}
func main() {
if len(os.Args) != 2 {
die(usage)
}
n, err := strconv.Atoi(os.Args[1])
if err != nil {
die(err)
}
p, l := make([]int, n), make([]int, n)
kp, kl := make([]int, n), make([]int, n)
vp, vl := rand.Perm(n), rand.Perm(n)
for i := 0; i < n; i++ {
p[vp[i]], l[vl[i]] = i, i
kp[i], kl[i] = vp[i], vl[i]
}
for i := 0; i < n; i++ {
fmt.Printf("{Level: %d, Priority: %d, Value: %d},\n", kl[i]+1, kp[i]+1, i+1)
}
fmt.Printf("Sorted by level: {%d", l[0]+1)
for i := 1; i < n; i++ {
fmt.Printf(", %d", l[i]+1)
}
fmt.Println("}")
fmt.Printf("Sorted by priority: {%d", p[0]+1)
for i := 1; i < n; i++ {
fmt.Printf(", %d", p[i]+1)
}
fmt.Println("}")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment