Mastermind - algorytm zgadywania przez komputer

Odpowiedz Nowy wątek
2017-10-12 11:50
inny007
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?

Pozostało 580 znaków

2017-10-12 16:53
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.?


Pozostało 580 znaków

2017-10-12 18:27
inny007
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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