Mercurial > repos > icfp2013
changeset 51:e634e81c4c84
Added solver driver
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 11 Aug 2013 05:55:06 -0700 |
parents | f4399a22a704 |
children | 0ea0bae24173 |
files | src/driver.tp |
diffstat | 1 files changed, 52 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/driver.tp Sun Aug 11 05:55:06 2013 -0700 @@ -0,0 +1,52 @@ +#{ + main <- :args { + if: (args length) > 1 { + numops <- int32: (args get: 1) + + + file <- os open: "data/myproblems.json" (os O_RDONLY) + fstr <- (os read: file 400 * 1024) // file was 276k before bonus problems... + os close: file + + probs <- requests problems: fstr + + filtered <- #[] + foreach: probs :idx el { + if: (not: (el solved)) && (el size) = numops && (el timeLeft) > 0 { + filtered append: el + } + } + numtests <- #[16 32 64 128 256 256] + if: (args length) > 2 { + prog <- bv program + authKey <- args get: 2 + if: numops < 10 { + //nt <- numtests get: (numops - 3) + nt <- 32 + trees <- (prog allOfSize: numops) + foreach: filtered :idx el { + probtrees <- prog filterTrees: trees (el operators) + info <- solver classify: prog probtrees nt + solver solve: (el id) withAuth: authKey andInfo: info andProg: prog + } + } else: { + nt <- 24 + foreach: filtered :idx el { + print: "Generating programs for operators: " . ((el operators) fold: "" with: :acc el { acc . el }) . "\n" + probtrees <- prog allOfSize: numops withOps: (el operators) + print: "Generated " . (string: (probtrees length)) . " programs\n" + probtrees <- prog filterTrees: probtrees (el operators) + print: "Running classifier " . (string: (probtrees length)) . " programs\n" + info <- solver classify: prog probtrees nt + solver solve: (el id) withAuth: authKey andInfo: info andProg: prog + } + } + } else: { + foreach: filtered :idx el { + print: el + } + } + 0 + } + } +}