annotate src/solver.tp @ 32:2b5357b13e2d

Initial work on solver
author Mike Pavone <pavone@retrodev.com>
date Sat, 10 Aug 2013 19:54:20 -0700
parents
children b00904b36aca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 classify <- :prog trees {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 testvals <- #[]
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 i <- 0
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 (os srand: (os time))
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 while: {i < 256} do: {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 i <- i + 1
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 testvals append: (uint64: (os rand64))
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 root <- dict linear
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 foreach: trees :idx tree {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 prog root!: tree
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 res <- prog run: (testvals get: 0)
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 arr <- root get: res withDefault: #[]
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 arr append: tree
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 if: (arr length) = 1 {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 root set: res arr
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 #{
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 inputs <- { testvals }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 valmap <- { root }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 main <- :args {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 size <- 3
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 if: (args length) > 1 {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 size <- int32: (args get: 1)
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 prog <- bv program
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 if: size >= 2 {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 trees <- (prog allOfSize: size)
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 if: (args length) > 2 {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 ops <- (args get: 2) splitOn: ","
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 trees <- prog filterTrees: trees ops
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 info <- classify: prog trees
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 foreach: (info valmap) :val arr {
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40 print: "Value: 0x" . (hex: val) ." produced by " . (string: (arr length)) . "programs\n"
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 }
2b5357b13e2d Initial work on solver
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44 }