Store username with plant
authorJoachim Breitner <mail@joachim-breitner.de>
Thu, 25 Jun 2009 09:07:49 +0000 (11:07 +0200)
committerJoachim Breitner <mail@joachim-breitner.de>
Thu, 25 Jun 2009 09:09:40 +0000 (11:09 +0200)
src/Lseed/Data.hs
src/Lseed/Mainloop.hs
src/dbclient.hs
src/dbscorer.hs
src/fastScorer.hs
src/main.hs

index 75d02d7..75b1daf 100644 (file)
@@ -25,6 +25,7 @@ type AnnotatedGarden = Garden StipeInfo
 data Planted a = Planted
        { plantPosition :: Double -- ^ Position in the garden, interval [0,1]
        , plantOwner    :: Integer -- ^ Id of the user that owns this plant
+       , plantOwnerName:: String -- ^ Name of the owner of the plant
        , genome        :: GrammarFile -- ^ Lsystem in use
        , phenotype     :: Plant a -- ^ Actual current form of the plant
        }
index 23368de..ae57153 100644 (file)
@@ -40,6 +40,7 @@ lseedMainLoop rt obs gardenSource maxDays = do
                                genome <- getUpdatedCode gardenSource (fmap (const ()) parent)
                                return $ Planted (plantPosition parent + seedPos)
                                                 (plantOwner parent)
+                                                (plantOwnerName parent)
                                                 genome
                                                 (fmap (const NoGrowth) inititalPlant)
 
index 9e766bb..eaae6b5 100644 (file)
@@ -8,12 +8,23 @@ import Control.Applicative
 import Control.Monad
 import Text.Printf
 
-dbc2genome = either (error.show) id . parseGrammar "" . dbcCode
 
-getDBGarden = spread <$> map dbc2genome <$> getCodeToRun
-  where spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g inititalPlant) gs [0..]
+getDBGarden = spread <$> map compileDBCode <$> getCodeToRun
+  where spread gs = zipWith (\(u,n,g) p ->
+                Planted ((fromIntegral p + 0.5) / l)
+                        u
+                        n
+                        g
+                        inititalPlant
+               ) gs [0..]
          where l = fromIntegral (length gs)
 
+compileDBCode dbc =
+       case  parseGrammar "" (dbcCode dbc) of
+               Left err          -> error (show err)
+               Right grammarFile -> (dbcUserID dbc, dbcUserName dbc, grammarFile)
+dbc2genome = either (error.show) id . parseGrammar "" . dbcCode
+
 getDBUpdate planted = maybe (genome planted) dbc2genome <$>
                       getUpdatedCodeFromDB (plantOwner planted)
 
index 411a1d5..bcf86a7 100644 (file)
@@ -8,13 +8,19 @@ import Control.Monad
 import Text.Printf
 
 getDBGarden = spread <$> map compileDBCode <$> getCodeToRun
-  where spread gs = zipWith (\(u,g) p -> Planted ((fromIntegral p + 0.5) / l) u g inititalPlant) gs [0..]
+  where spread gs = zipWith (\(u,n,g) p ->
+                Planted ((fromIntegral p + 0.5) / l)
+                        u
+                        n
+                        g
+                        inititalPlant
+               ) gs [0..]
          where l = fromIntegral (length gs)
 
 compileDBCode dbc =
        case  parseGrammar "" (dbcCode dbc) of
                Left err          -> error (show err)
-               Right grammarFile -> (dbcUserID dbc, grammarFile)
+               Right grammarFile -> (dbcUserID dbc, dbcUserName dbc, grammarFile)
 
 dbc2genome = either (error.show) id . parseGrammar "" . dbcCode
 
index 4baba8e..acd0b84 100644 (file)
@@ -25,20 +25,27 @@ readArgs doit = do
          else  do
                genomes <- mapM parseFile args
                doit (spread genomes)
-  where        spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g inititalPlant) gs [0..]
+  where        spread gs = zipWith (\g p ->
+               Planted ((fromIntegral p + 0.5) / l)
+                       p
+                       (show p)
+                       g
+                       inititalPlant
+               ) gs [0..]
          where l = fromIntegral (length gs)
              
 
 scoringObs = nullObserver {
        obFinished = \garden -> do
                forM_ garden $ \planted -> do
-                       printf "Plant from %d at %.4f: Total size %.4f\n"
+                       printf "Plant from %s (%d) at %.4f: Total size %.4f\n"
+                               (plantOwnerName planted)
                                (plantOwner planted)
                                (plantPosition planted)
                                (plantLength (phenotype planted))
-               let owernerscore = foldr (\p -> M.insertWith (+) (plantOwner p(plantLength (phenotype p))) M.empty garden
-               forM_ (M.toList owernerscore) $ \(o,s) -> 
-                       printf "Sum for %d: %.4f\n" o s
+               let owernerscore = foldr (\p -> M.insertWith (+) (plantOwner p, plantOwnerName p)(plantLength (phenotype p))) M.empty garden
+               forM_ (M.toList owernerscore) $ \((o,n),s) -> 
+                       printf "Sum for %s (%d): %.4f\n" n o s
        }
 
 main = readArgs $ \garden -> do
index 5682fc7..eb2c903 100644 (file)
@@ -24,7 +24,13 @@ readArgs doit = do
          else  do
                genomes <- mapM parseFile args
                doit (spread genomes)
-  where        spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g inititalPlant) gs [0..]
+  where        spread gs = zipWith (\g p ->
+               Planted ((fromIntegral p + 0.5) / l)
+                       p
+                       (show p)
+                       g
+                       inititalPlant
+               ) gs [0..]
          where l = fromIntegral (length gs)
                
 main = readArgs $ \garden -> do