Mercurial > repos > icfp2013
changeset 8:3f0172ceab81
Add support for generating programs with if0, thus allowing us to generate all programs up to size 5.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 09 Aug 2013 00:47:29 -0700 |
parents | 301f16245955 |
children | 0ccebdbc3e80 |
files | src/bv.tp |
diffstat | 1 files changed, 24 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/bv.tp Fri Aug 09 00:01:05 2013 -0700 +++ b/src/bv.tp Fri Aug 09 00:47:29 2013 -0700 @@ -192,13 +192,35 @@ } numLeft <- numLeft + 1 } + if: n > 3 { + numLeft <- 1 + limitLeft <- n - 2 + while: { numLeft < limitLeft } do: { + numMid <- 1 + limitMid <- n - (1 + numLeft) + while: { numMid < limitMid } do: { + numRight <- n - (1 + numLeft + numMid) + choicesRight <- (allOfSize: numRight inFold?: infold?) + choicesMid <- (allOfSize: numMid inFold?: infold?) + foreach: (allOfSize: numLeft inFold?: infold?) :idx leftExp { + foreach: choicesMid :idx midExp { + foreach: choicesRight :idx rightExp { + res append: (if0: leftExp then: midExp else: rightExp) + } + } + } + numMid <- numMid + 1 + } + numLeft <- numLeft + 1 + } + } } res } } allOfSize <- :n { - allOfSize: n inFold?: false + allOfSize: (n - 1) inFold?: false } } } @@ -217,7 +239,7 @@ test: (program gentestprog) test: (program exampleprog) prog <- program - foreach: (prog allOfSize: 3) :idx tree { + foreach: (prog allOfSize: 5) :idx tree { prog root! tree test: prog }