Bir Fox ve Geese oyun türü için AI yazıyorum. Benim tahminlerimden biri şunun gibi:Prolog findall/3: Birden fazla çanta
moveFox(+PrevState, -NextState, -PegList, +VisitedStates, -NewVisitedStates)
Bir oyun durumu alır ve bir tilki ile bir hareket yapar. Ortaya çıkan durum NextState
ile birleştirilmiştir ve gerçek hareket PegList
ile birleştirilmiştir. Herşey beklendiği gibi çalışır.
Tüm hareketlerin 'NextState
için yardımcı programını hesaplıyorum. En yüksek yarar skoruyla durumu bulabilmek için findall/3
numaralı telefonu kullanıyorum. Maksimum yarar puanı bularak
findall(NextState, moveFox(...), NextStatesList)
Ben en yüksek yarar skoru NextState
(listede yanı sıra konumunu) biliyorum. Tek bir sorun şu anda ben NextState
gelmeye yapıldığı hamle anlaması için herhangi bir yüklemi, ör .: yerine böyle bir yüklemi yazma
getMove(+PrevState, +NextState, -PegList)
yazmadım vardır, ben daha ziyade findall/3
veya eşdeğerini kullanmak. Benim sorum iki farklı listede iki farklı değişken almak için bir yol varsa. (Işe yarardı varsa) böyle düşünüyorum:
findall([NextState, PegList], moveFox(...), [NextStatesList, MoveList])
Böyle işlevselliğini uygulamak Could iki kez (çirkin havai) findall/3
çalıştırmak veya getMove(+PrevState, +NextState, -PegList)
yüklemi olduğunu yazmaya ya kalmadan? senin Prolog pairs_keys_values / 3 yoksa
Çok hızlı cevapladığınız için teşekkürler! Bir çekicilik gibi çalıştı. –