public int?FindChoicesRemaining(OrderedFilmRank orderedFilmRank) { int choicesRemaining = 0; var sw = new Stopwatch(); sw.Start(); if (!orderedFilmRank.Completed) { var cloned = orderedFilmRank.Clone(); var random = new Random(); var sortResult = orderService.OrderFilms(orderedFilmRank.SortedFilms.Where(f => !f.Ignore)); do { if (random.Next() % 2 == 0) { sortResult.LeftSort.AddHigherRankedObject(sortResult.RightSort); } else { sortResult.RightSort.AddHigherRankedObject(sortResult.LeftSort); } sortResult = orderService.OrderFilms(sortResult.SortedResults.Where(f => !f.Ignore)); choicesRemaining++; } while (!sortResult.Completed); } sw.Stop(); Console.WriteLine($"Choices {choicesRemaining} | Seconds {sw.Elapsed.TotalSeconds}"); return(choicesRemaining); }
public FilmRank Map(OrderedFilmRank orderedFilmList) { var filmList = new FilmRank() { Id = orderedFilmList.Id, Completed = orderedFilmList.Completed, ChoiceA = filmMapper.Map(orderedFilmList.ChoiceA), ChoiceB = filmMapper.Map(orderedFilmList.ChoiceB), SortedFilms = orderedFilmList.SortedFilms.Select(f => filmMapper.Map(f)).ToArray(), IgnoredFilms = orderedFilmList.IgnoredFilms.Select(f => filmMapper.Map(f)).ToArray(), ChoicesRemaining = orderedFilmList.ChoicesRemaining }; return(filmList); }