Zastanawiałem się nad stworzeniem gry logicznej podobnej do Puzzle Einsteina , która zawierałaby różne zestawy wskazówek dla każdej nowej gry.
Jakich struktur danych użyłbyś do obsługi różnych podmiotów (zwierzęta domowe, kolory domów, narodowości itp.), Zasady odliczeń itp., Aby zagwarantować, że podane wskazówki wskazują na unikalne rozwiązanie?
Trudno mi myśleć o tym, jak uzyskać zasady dedukcji, aby grać wraz z możliwymi wskazówkami; każdy wgląd byłby mile widziany.
logic
data-structure
puzzle
Taserian
źródło
źródło
Odpowiedzi:
Łał. To faktycznie wydaje się być sytuacją, w której przydatne byłyby old-schoolowe semantyczne sieci AI, takie jak Richard Bartle, które będą miały znaczenie dla przyszłości gier, gdy pisał Sztuczną inteligencję i gry komputerowe . Zasadniczo masz kilka list danych (tabele bazy danych, cokolwiek), z których pierwsza określa reguły dotyczące tego, jak rzeczy mogą się ze sobą odnosić, takie jak:
Następnie masz wystąpienia kategorii:
Te struktury danych nie uwzględniają całkowicie sytuacji - potrzebujesz ograniczeń unikatowości, a niektóre kategorie wymagają meta-reguł, takich jak
POSITION
obsługa „po prawej stronie”, „po lewej stronie” i „dalej” na przykład, ale struktura problemu wydaje się je zdecydowanie sugerować.Nie wiem, czy to zaprowadzi cię bardzo daleko, ale mam nadzieję, że to pomoże.
źródło
Moje zalecenie to przyjrzenie się kodowi Python dla problemów z ograniczeniami związanymi z ograniczeniami (CSP) dostarczonego z projektem AIMA . Używają słownika (tablica asocjacyjna / tablica skrótów) do śledzenia poprawnych ograniczeń. Ponadto istnieją implementacje kilku algorytmów używanych do rozwiązywania CSP, takich jak min-konflikty i AC3.
Kod zawiera przykładowy problem Zebry jako przykład, taki jak ten, z którym się łączysz.
źródło
To naprawdę idzie bardzo głęboko. Dziwne, że Wikipedia nigdy o tym nie wspomina.
To, czego szukasz, to bardzo twarde dowody, które prawdopodobnie można uzyskać za pomocą takich rzeczy, jak dowody Fitch . Więc staramy się odjąć rzeczy z naszych danych. Istnieje wiele konstruktorów Fitch, którzy wykonują dla ciebie dużo pracy. Ale niektóre ćwiczenia nie mają tego udowodnić.
Nie wiem, czy użytkownik powinien wykonać obliczenia. Jeśli tak, pamiętaj o takich rzeczach jak 3SAT , które są nierozwiązywalnym problemem dla czasu wielomianowego.
Jeśli chodzi o struktury danych, których chcesz użyć, myślę, że chcesz mieć jakąś
Rule
klasę. Reguła może być dowolna, w zależności od typu. W logice predykatów nie ma wielu reguł , więc można to obejść przez dziedziczenie (if, iff i, lub, nie ...). Zasady te należy jedynie ocenić. Jedyne, co może zrobić reguła, to zwrócenie wartości prawda lub fałsz. Ponieważ to właśnie robisz z logiką predykatów. Na uniwersytecie John Kelly polecił mi przeczytać tę książkę .Wracając do zajęć: Powinieneś zobaczyć te problemy tak, jakbyś widział wdrożenie normalnych obliczeń za pomocą matematyki. Co to jest
+
operator? Zawiera dwa parametry, które mogą być nowym równaniem lub tylko liczbą. Myślę, że masz to samo z Regułami. Mogą mieć nowe reguły jako parametr lub po prostu wartość logiczną (tzw. Predykat).Mam nadzieję, że to ci bardzo pomaga, zwłaszcza referencje. Jeśli chcesz dowiedzieć się więcej lub pójdę w złym kierunku, powiedz mi.
źródło
Rule
klasa to dobry pomysł. Myślę, że modelowanie tych ograniczeń nadal odbywa się za pomocą logiki predykatów.Nie mam dobrej odpowiedzi, ale szukając wskazówek dotyczących tego samego rodzaju problemu, znalazłem to repozytorium na github:
https://github.com/nateinaction/Zebra-Puzzle
Zawiera pewną logikę wybierania wskazówek i decydowania, ile wskazówek potrzebujesz, aby rozwiązać zagadkę.
źródło
Problem polega na rozwiązaniu tego.
Oczywiście myślę, że nie byłoby zbyt trudno pracować wstecz; to jest taka lista:
Fred Red Dog
Steve Blue Cat
Bill Purple Whale
Eric Cyan Dolphin
Które można łatwo wygenerować, a następnie stworzyć z tego zestaw reguł.
Jeśli chodzi o przechowywanie, dlaczego nie zestaw każdej osobnej rzeczy, więc [Fred, Steve, Bill, Eric] i zestaw odpowiedzi [Fred, Red, Dog]. Następnie „NAZWA (NIE) DZIAŁA”.
Czy gdy przyjdzie Ci do głowy, czy naprawdę ważne jest unikalne rozwiązanie? Tak długo, jak Twoja gra może podzielić je na listy i zaznaczyć „zestaw 1 nie zawiera wieloryba”.
źródło