Mastermind - algorytm zgadywania przez komputer

0

Piszę właśnie algorytm do odgadywania przez komputer kodu wymyślonego przez użytkownika, ale mam problem z implementacją algorytmu Kuntha.

Najpierw tworzę zbiór wszystkich możliwych kombinacji - użytkownik ma mieć możliwość wyboru od 6 do 12 kolorów i od 3 do 6 pozycji.

Załóżmy, że użytkownik wpisał kod ABCD. Pierwsza próba zgadnięcia to AABB. Teraz wiem, że ze zbioru trzeba usunąć wszystkie możliwości, które nie mają żadnego A i żadnego B, i takie, które składają się z samych liter A i B, ale mam problem z implementacją tego, a na internecie ciężko znaleźć coś poza ogólnym opisem tego algorytmu. Mógłby ktoś pomóc w ogólnej idei implementacji takiego rozwiązania?

0

Nie można by po prostu zrobić tak, że każdy element zbioru robimy .ToString a potem filtrujemy (zostawiamy) tylko te elementy, które !.Contain("A") itp.?

0
private void deleteImpossibleCombnations() {

			if(userInput.Contains('X') || userInput.Contains('O')){
				for(int i=0;i<numberOfPositions;i++)
					listOfCombinations.RemoveAll(listOfCombinations => !listOfCombinations.Contains(code[i]));
			}
			if(!userInput.Contains('X') && !userInput.Contains('O')) {
				for(int i = 0; i < numberOfPositions; i++)
					listOfCombinations.RemoveAll(listOfCombinations => listOfCombinations.Contains(code[i]));
			}
		}

mam coś takiego i na początku rzeczywiście bardzo szybko usuwa możliwe warianty, ale potem jak zostaje powiedzmy 16 możliwosci to już praktycznie stoję w miejscu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1