gencodes
This commit is contained in:
79
gencodes/main.go
Normal file
79
gencodes/main.go
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Generate all possible values up to 10 bits
|
||||||
|
byLen := map[int][]string{
|
||||||
|
1: []string{"0", "1"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for l := 2; l <= 10; l++ {
|
||||||
|
values := []string{}
|
||||||
|
|
||||||
|
for _, v := range byLen[l-1] {
|
||||||
|
values = append(values, v+"0", v+"1")
|
||||||
|
}
|
||||||
|
|
||||||
|
byLen[l] = values
|
||||||
|
}
|
||||||
|
|
||||||
|
limits := map[int]int{
|
||||||
|
1: 0,
|
||||||
|
2: 0,
|
||||||
|
3: 0,
|
||||||
|
4: 2,
|
||||||
|
5: 8,
|
||||||
|
6: 8,
|
||||||
|
7: 16,
|
||||||
|
8: 32,
|
||||||
|
9: 64,
|
||||||
|
10: 256,
|
||||||
|
}
|
||||||
|
|
||||||
|
total := 0
|
||||||
|
short := 0
|
||||||
|
|
||||||
|
for l := 1; l <= 10; l++ {
|
||||||
|
vs := byLen[l]
|
||||||
|
limit := limits[l]
|
||||||
|
values := []string{}
|
||||||
|
|
||||||
|
valueLoop:
|
||||||
|
for _, v := range vs {
|
||||||
|
if limit == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 1; i < l; i++ {
|
||||||
|
for _, v2 := range byLen[i] {
|
||||||
|
if strings.HasPrefix(v, v2) {
|
||||||
|
continue valueLoop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
values = append(values, v)
|
||||||
|
limit--
|
||||||
|
print(v + "\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
byLen[l] = values
|
||||||
|
|
||||||
|
total += len(values)
|
||||||
|
if l < 8 {
|
||||||
|
short += len(values)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for l := 1; l <= 10; l++ {
|
||||||
|
values := byLen[l]
|
||||||
|
log.Printf("%d: %d", l, len(values))
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("total=%d", total)
|
||||||
|
log.Printf("short=%d", short)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user