Prolog - powtórzenia wyników.

A1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0
Kopiuj
biega(marek).
plywa(damian).
biega(marcin).
plywa(marcin).
sportowiec(X):- biega(X);plywa(X).

Cześć wywołujący zapytanie sportowiec(X) próbuje wyciągnąć wszystkie obiekty które albo pływaja albo biegają. Nie rozumiem dlaczego obiekt który jednocześnie pływa i biega się duplikuje.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
1

Bo wpierw zostanie dopasowany jako biegający a potem jako pływający. Prolog nie robi deduplikacji.

A1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

Jest jakiś sposób aby temu zaradzić?
W jaki sposób mogę zapytać kim jest marek?

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
1

Musisz użyć setof/3 lub bagof/3. Tu masz przykład na Simpsonach.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.