public void PlaceGameTags() { var startTime = DateTime.UtcNow; var counter = 0; do { //RemoveStartingBaseFromCoordinatesSeed(); var coordinate = GetRandomCoordinatesFromSeed(); RemoveCoordinatesFromSeed(coordinate); var valueSeed = GetValueSeed(); if (_gameBoard.Where(t => t.Value != null).Any(t => t.Coordinate != coordinate) || _gameBoard.Count == 0) { do { var value = GetRandomValueFromSeed(valueSeed); valueSeed = RemoveValueFromSeed(valueSeed, value); var tag = new GameBoardTag(coordinate, value); if (_boardRules.ValidateGameBoardTag(tag, _gameBoard, _startingBase)) { counter++; _gameBoard.AddOrReplace(tag); break; } } while (valueSeed.Length != 0); } BackTrackIfCoordinatesSeedIsEmpty(); if (counter == 35000) { Console.WriteLine("Not SOlved!!!!!"); } } while (_gameBoard.Count(t => t.Value != null) < 81 && counter < 35000); Console.WriteLine(counter); }