public IList <WoodenBoardResults> Cuts(WoodenBoard woodenBoard, WoodenBoardPattern woodenBoardPattern) { return (CreateCuts(woodenBoard, woodenBoardPattern, woodenBoard.Thickness) .Where(r => r.WoodenBoards.Select(w => w.Area).Sum() == woodenBoard.Area) .Distinct(new WoodenBoardResultsEquality()) .ToList()); }
private static IEnumerable <WoodenBoardResults> CreateCuts(WoodenBoard woodenBoard, WoodenBoardPattern woodenBoardPattern, int thickness) { var patternWidth = woodenBoardPattern.Width; var patternHeight = woodenBoardPattern.Height; var boardWidth = woodenBoard.Width; var boardHeight = woodenBoard.Height; yield return(CreateWoodenBoardResult(patternWidth, patternHeight, boardWidth, boardHeight, thickness)); yield return(CreateWoodenBoardResult(patternHeight, patternWidth, boardWidth, boardHeight, thickness)); yield return(CreateWoodenBoardResult2(patternWidth, patternHeight, boardHeight, boardWidth, thickness)); yield return(CreateWoodenBoardResult2(patternHeight, patternWidth, boardHeight, boardWidth, thickness)); }