packages feed

scrabble-bot-0.1.0.0: Main.hs

{-# LANGUAGE LambdaCase #-}

import qualified Data.DAWG.Packed as D
import PlayGen
import GameData
import Paths_scrabble_bot

import System.Directory
import Text.Printf

dawgFile = "twl06.dawg"
dictFile = "dictionaries/TWL06.txt"

getSolutions :: IO [Play]
getSolutions = do
    dictPath <- getDataFileName dictFile
    dawgPath <- getDataFileName dawgFile
    dawg <- do
        doesFileExist dawgPath >>= \case
            True  -> D.fromFile dawgPath
            False -> do 
                ws <- fmap lines $ readFile dictPath
                let dawg = D.fromList ws
                D.toFile dawgPath dawg
                return dawg 
    return $ genAllPlays table dawg rack

main = do
    solutions <- getSolutions
    printf "Number of solutions: %d\n\n" (length solutions)
    mapM_ (showPlay table) (take numSolutionsShown solutions)


-- Modify the following:

numSolutionsShown = 20

rack = "RECA"

table =  [
    "          CARAT",
    "         BA    ",
    "          I    ",
    "          R    ",
    "   REHARDEN    ",
    "         N     ",
    "         T     ",
    "      TOUR    E",
    "         YONDER",
    "              O",
    "              T",
    "              I",
    "              C",
    "               ",
    "               "]