6bebace68433cca2f9efd84e44928355358b6898
[L-seed.git] / src / dbscorer.hs
1 import Lseed.Data
2 import Lseed.Data.Functions
3 import Lseed.DB
4 import Lseed.Grammar.Compile
5 import Lseed.Grammar.Parse
6 import Lseed.Mainloop
7 import Control.Applicative
8 import Control.Monad
9 import Text.Printf
10
11 getGarden = spread <$> map (either (error.show) compileGrammarFile . parseGrammar "" . dbcCode)
12                    <$> getCodeToRun
13   where spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g (Stipe () 0 [])) gs [0..]
14           where l = fromIntegral (length gs)
15
16 scoringObs = nullObserver {
17         obFinished = \garden -> do
18                 forM_ garden $ \planted -> do
19                         printf "Plant from %d at %.4f: Total size %.4f\n"
20                                 (plantOwner planted)
21                                 (plantPosition planted)
22                                 (plantLength (phenotype planted))
23         }
24
25 main = do
26         garden <- getGarden
27         lseedMainLoop False scoringObs 10 garden