public static CrossBoard ToCrossBoard(this CrossWordTimes self) { var board = new CrossBoard(); int cols = (int)self.Size.Cols; int rows = (int)self.Size.Rows; board.SetBoardSize(cols, rows); int n = 0; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { var val = self.Grid[n]; if (val == ".") { board.AddStartWord(col, row); } n += 1; } } // debug the generated template // using (StreamWriter writer = new StreamWriter("template.txt")) // { // board.WriteTemplateTo(writer); // } return(board); }
public void CrossBoardPreprocessTest() { ICrossBoard cb = new CrossBoard(); cb.SetBoardSize(5, 5); for (int i = 0; i < 5; i++) { var sw = new StartWord(); sw.StartX = i; sw.StartY = 0; cb.AddStartWord(sw); if (i > 0) { sw.StartX = 0; sw.StartY = i; cb.AddStartWord(sw); } else { sw.StartX = 2; sw.StartY = 2; cb.AddStartWord(sw); } } cb.Preprocess(new Dictionary(cb.MaxWordLength)); Assert.Equal(8, cb.GetPatternCount()); }
private CrossBoard GetCrossboard() { ICrossBoard board = null; // var template = GetRandomCrosswordTemplateFromDb(); CrosswordTemplate template = null; if (template != null) { board = new CrossBoard(); int cols = (int)template.Cols; int rows = (int)template.Rows; board.SetBoardSize(cols, rows); int n = 0; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { var val = template.Grid[n]; if (val == ".") { board.AddStartWord(col, row); } n += 1; } } // debug the generated template // using (StreamWriter writer = new StreamWriter("template.txt")) // { // board.WriteTemplateTo(writer); // } } else { var model = CrossBoardCreator.GetCrossWordModelFromUrl("http-random"); board = model.ToCrossBoard(); // add in database var newTemplate = new CrosswordTemplate() { Rows = model.Size.Rows, Cols = model.Size.Cols, Grid = model.Grid }; db.CrosswordTemplates.Add(newTemplate); db.SaveChanges(); } var gen = new CrossGenerator(dictionary, board); board.Preprocess(dictionary); var generated = gen.Generate().FirstOrDefault() as CrossBoard; return(generated); }