Mantık Oyunları için Veri Yapıları / Tümdengelim Kuralları / Yeterli İpucu Kümesi?


11

Einstein'ın Yapbozuna benzeyen , her yeni oyun tekrarında farklı ipuçları içeren bir mantık oyunu geliştirmeyi düşünüyorum .

Verdiğiniz ipuçlarının benzersiz bir çözüme işaret etmesini sağlamak için farklı varlıkları (evcil hayvanlar, evlerin renkleri, milliyetler vb.), Kesinti kurallarını vb. İşlemek için hangi veri yapılarını kullanırsınız?

Olası ipuçlarıyla birlikte oynamak için kesinti kurallarının nasıl alınacağını düşünmekte zorlanıyorum; herhangi bir içgörü takdir edilecektir.


1
Oynamanın çok ilginç olacağını düşünmüyorum. Bir kez çözdükten sonra , farklı kurallarla tekrar yapmak sudoku oynamaktan çok farklı olmaz.
o0 '.

4
Öte yandan, insanlar onlardan sıkılmadan önce yüzlerce sudoku yapıyorlar. Ve cevapları sadece bir numara veya isim yazmak yerine dünyadaki bir çeşit eyleme bağlarsanız, insanlar bunun sudoku olduğundan bile şikayet etmezler.

Bu bana bu oyunu hatırlatıyor: nick.com/games/series.html
CeeJay

3
Everett Kaser'ın oyunlarına bir göz atmanızı öneririm - bu doğadan bir ton oyun yaptı, özellikle o bulmacadan esinlenilen Sherlock'un yanı sıra Honeycomb Hotel veya son oyunu gibi diğer oyunlardan da bazıları , Bayan Hudson . Bu tür şeyleri çalışırken görmenize yardımcı olabilir.
Michael Madsen

@Joe: söylediğin teknik olarak doğru, ama burada önemli olan ne yaptığını bilmek . Bunu yaptığınızı biliyorsanız, sudoku benzeri bir oyun yapmak iyidir, ancak başka bir şey yaptığınızı düşünüyorsanız kesinlikle bok sonuçlarına yol açacaktır.
o0 '.

Yanıtlar:


4

Vay. Bu aslında, Richard Bartle gibi Yapay Zeka ve Bilgisayar Oyunları yazarken oyunların geleceği için önemli olacağını düşündüğü eski AI AI semantik ağlarının yararlı olacağı bir durum gibi görünüyor. Temel olarak, birincisi, şeylerin birbiriyle nasıl ilişkilendirilebileceğine ilişkin kuralları belirten birkaç veri listeniz (veritabanı tabloları, ne olursa olsun) vardır:

a PERSON must LIVE IN a DOMICILE
a PERSON must OWN an ANIMAL
a PERSON must DRINK a BEVERAGE
a PERSON must SMOKE a CIGARETTE BRAND
a PERSON must BE OF a NATIONALITY
a DOMICILE must BE IN a POSITION
a DOMICILE must BE OF a COLOR

Sonra kategorilerin örnekleri var:

ANIMAL: dog snail zebra fox horse
BEVERAGE: milk tea OJ coffee water
CIGARETTE BRAND: Kools Parliaments Luckies OldGold Chesterfields
NATIONALITY: Englishman Spaniard Ukrainian Japanese Norwegian
POSITION: first second third fourth fifth
COLOR: red green yellow ivory blue

Bu veri yapıları durumu tamamen kapsamamaktadır - teklik kısıtlamalarına ihtiyacınız vardır ve bazı kategoriler meta kurallara POSITIONihtiyaç duyar , örneğin "sağ" ı, "sol" ve "sonrakinin" solunda Örneğin, "kavramlar - ama sorunun yapısı güçlü bir şekilde öneriyor gibi görünüyor.

Bu sizi çok uzağa götürecekse Dunno, ama umarım yardımcı olur.


4

Benim önerim , AIMA projesi ile sağlanan Kısıt Memnuniyeti Sorunları (CSP) için Python koduna bakmaktır . Geçerli kısıtlamaları izlemek için bir Sözlük (ilişkisel dizi / karma tablosu) kullanırlar. Ayrıca, CSP'leri çözmek için min-çakışmalar ve AC3 gibi çeşitli algoritmaların uygulamaları da vardır.

Kod, bağlandığınız gibi örnek olarak örnek bir Zebra sorunu içerir.


1

Aslında bu çok derin. Wikipedia'nın hiç bahsetmediği garip.

Aradığınız şey, muhtemelen Fitch provaları gibi şeylerle ulaşılabilecek çok sert kanıtlardır . Bu nedenle, verilen verilerimizden bir şeyler çıkarmaya çalışıyoruz. Bir sürü vardır Fitch geçirmez inşaatçılar sizin için bir sürü iş yapmak. Ancak bazı alıştırmalar kanıtlamak için değildir.

Kullanıcının hesaplamaları yapması gerekip gerekmediğini bilmiyorum. Eğer öyleyse, polinom zamanı için geri alınamaz problemler olan 3SAT gibi şeylerin farkında olun .

Kullanmak istediğiniz veri yapılarına gelince, bence bir çeşit Rulesınıfa sahip olmak istiyorsunuz . Kural, türüne bağlı olarak herhangi bir şey olabilir. Yüklem mantığında çok fazla kural yoktur , bu nedenle miras yoluyla üstesinden gelinebilir (eğer, iff, ve, ya da değil ...). Bu kuralların yalnızca değerlendirilmesi gerekir. Ve bir kuralın yapabileceği tek şey doğru veya yanlış döndürmektir. Çünkü yüklem mantığıyla yaptığınız şey budur. Üniversitede John Kelly tarafından bu kitabı okumam önerildi .

Sınıflara dönersek: Bu problemleri matematikle normal hesaplamaları uygularken gördüğünüz gibi görmelisiniz. Bir nedir +santral? Tek başına yeni bir denklem veya sadece bir sayı olabilecek iki parametre içerir. Bence Kurallar için de aynı şey var. Parametre olarak yeni Kurallara veya sadece bir boole'ye (yüklem olarak adlandırılır) sahip olabilirler.

Umarım bu size çok yardımcı olur, özellikle referanslar. Eğer daha fazlasını bilmek istiyorsan, ya da yanlış yöne gidersem, lütfen söyle.


Sorun sadece sonlu (ve küçük!) Bir model üzerinde yüklem mantığının kanıtı değil, ya da bir ödül koymak yerine cevap verirdim. Amaç sorunu çözmek değil - amaç sorunu otomatik olarak ve ilginç bir şekilde yapmaktır .

@Joe Sorun, küçük bir set için bile, hala 3SAT sorunu olacaktır. Sadece VE'leri VEYA VEYA'ları yaratırsanız, bu tatmin edici olmayan şeylere yol açabilir, bu yüzden rastgele bir bulmaca oluşturmak çok zor olacağını düşünüyorum. Bulmaca en azından bazı kısıtlamalar içermelidir. Bazen, geriye doğru muhakeme cevap olabilir (bir çözüm
bulun

Genel yüklem mantığı aslında 3SAT'den daha zordur; ancak modern kanıt algoritmaları pratikte oldukça iyi. Bunun yanı sıra, sadece bir model, bir bulmaca oluşturmak ve bir çözümü kontrol etmek lineer zamanda yapılabilir - hile, sağlanan kısıtlamaların benzersiz, keşfedilebilir bir çözüm ürettiğinden emin olmaktır.

@Joe bu bulmacayı oluşturmak için emin olabileceğimiz herhangi bir kısıtlama var mı? Soru hala şuydu: hangi veri yapısının kullanılacağı. Bu yüzden hala dersin Ruleiyi bir fikir olduğunu düşünüyorum . Bu kısıtlamaları modellemek hala bence yüklem mantığı tarafından yapılmaktadır.
Marnix

0

İyi bir cevabım yok, ama aynı tür bir sorunla ilgili ipuçları arıyorum, bu depoyu github'da buldum:

https://github.com/nateinaction/Zebra-Puzzle

İpuçlarını seçmek ve bulmacayı çözülebilir hale getirmek için kaç ipucuna ihtiyacınız olduğuna karar vermek için bazı mantık içerir.


-1

Bunu çözmede bu var.

Tabii ki, geriye doğru çalışmak çok zor olmayacağını düşünüyorum; böyle bir liste var:

  • Fred Kırmızı Köpek

  • Steve Blue Cat

  • Bill Mor Balina

  • Eric Cyan Yunus

Hangi kolayca oluşturulabilir ve daha sonra bundan bir dizi kural oluşturur.

Depolamaya gelince, neden her bir şeyin bir seti olmasın, öyleyse [Fred, Steve, Bill, Eric] ve bir cevap [Fred, Red, Dog]. Sonra 'NAME, EYLEM HEDEFİ YAPMADI'.

Aşağı indiğinizde, benzersiz bir çözüm gerçekten önemli mi? Oyununuz onları listelere ayırabildiği ve 'set 1'in Balina içermediğini' kontrol ettiğiniz sürece.


2
İşin püf noktası, sorunun hala zor olmasını istiyorsunuz. Oluşturduğunuz kurallar olası kombinasyonların% 90'ını geçerli cevaplar olarak kabul ediyorsa, artık ilginç bir bulmaca değildir.

Sanırım bu geçerli bir nokta - ama verilen ipuçlarının sayısını azaltmak için çözüm değil mi?
Komünist Ördek

1
Hayır. Yetersizliğin birçok geçerli sonuca yol açma olasılığı daha yüksektir. Aşırı spesifikasyonun çok açık bir sonuca yol açması muhtemeldir. İyi bir mantık bulmacası her ikisini de engeller.

Ah evet, bunu bir şekilde özledim. Birini düşünebilirsem daha iyi bir çözüm ekleyeceğim.
Komünist Ördek

Joe: Kesinlikle ilk yorumunda doğru. Willy-nilly'nin ipuçlarını bir araya getirmenize izin veren bir bulmaca, anaokulu sanat projesi gibi bir bulmaca değildir.
taserian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.