51
|
1 #{
|
|
2 main <- :args {
|
|
3 if: (args length) > 1 {
|
|
4 numops <- int32: (args get: 1)
|
|
5
|
|
6
|
|
7 file <- os open: "data/myproblems.json" (os O_RDONLY)
|
|
8 fstr <- (os read: file 400 * 1024) // file was 276k before bonus problems...
|
|
9 os close: file
|
|
10
|
|
11 probs <- requests problems: fstr
|
|
12
|
|
13 filtered <- #[]
|
|
14 foreach: probs :idx el {
|
|
15 if: (not: (el solved)) && (el size) = numops && (el timeLeft) > 0 {
|
|
16 filtered append: el
|
|
17 }
|
|
18 }
|
|
19 numtests <- #[16 32 64 128 256 256]
|
|
20 if: (args length) > 2 {
|
|
21 prog <- bv program
|
|
22 authKey <- args get: 2
|
|
23 if: numops < 10 {
|
|
24 //nt <- numtests get: (numops - 3)
|
|
25 nt <- 32
|
|
26 trees <- (prog allOfSize: numops)
|
|
27 foreach: filtered :idx el {
|
|
28 probtrees <- prog filterTrees: trees (el operators)
|
|
29 info <- solver classify: prog probtrees nt
|
|
30 solver solve: (el id) withAuth: authKey andInfo: info andProg: prog
|
|
31 }
|
|
32 } else: {
|
|
33 nt <- 24
|
|
34 foreach: filtered :idx el {
|
|
35 print: "Generating programs for operators: " . ((el operators) fold: "" with: :acc el { acc . el }) . "\n"
|
|
36 probtrees <- prog allOfSize: numops withOps: (el operators)
|
|
37 print: "Generated " . (string: (probtrees length)) . " programs\n"
|
|
38 probtrees <- prog filterTrees: probtrees (el operators)
|
|
39 print: "Running classifier " . (string: (probtrees length)) . " programs\n"
|
|
40 info <- solver classify: prog probtrees nt
|
|
41 solver solve: (el id) withAuth: authKey andInfo: info andProg: prog
|
|
42 }
|
|
43 }
|
|
44 } else: {
|
|
45 foreach: filtered :idx el {
|
|
46 print: el
|
|
47 }
|
|
48 }
|
|
49 0
|
|
50 }
|
|
51 }
|
|
52 }
|