Miles Wen
2011-06-15 08:25:52 UTC
hello everybody,
I have some trouble in solving the 'Zebra
Puzzle<http://en.wikipedia.org/wiki/Zebra_Puzzle>'
using drools5.
I defined a class named 'House' to represent the data, and the corresponding
enums as well : Color.java, Nation.java, Pet.java, Drink.java,
Cigarette.java, here are those sources:
House.java:
public class House {
// é¢è²
public Color color;
// æ¿åä»å·Šæ°çäœçœ® 1-5
public int position;
public Nation nation;
public Pet pet;
public Drink drink;
public Cigarette cigarette;
......
Color.java:
public enum Color {
red, yellow, blue, green, ivory
}
Nation.java:
public enum Nation {
englishman, spaniard, norwegian, ukrainian, japanese
}
Pet.java:
public enum Pet {
dog, fox, snails, horse, zebra
}
Drink.java:
public enum Drink {
orangeJuice, tea, coffee, milk, water
}
Cigarette.java:
public enum Cigarette {
kools, chesterfields, winston, luckyStrike, parliaments
}
And this is my drl file:
package com.sample
import com.sample.fh.*
rule "è±åœäººäœåšçº¢è²çæ¿åé"
when
$h1:House(nation == Nation.englishman, color != Color.red)
$h2:House(color == Color.red)
then
System.out.println("è±åœäººïŒenglishmanïŒäœåšçº¢è²ïŒredïŒçæ¿åé");
modify($h2){setColor($h1.color)};
modify($h1){setColor(Color.red)};
end
rule "西ççäººå »äºäžæ¡ç"
when
$h1:House(nation == Nation.spaniard)
$h2:House(pet == Pet.dog, nation != Nation.spaniard)
then
System.out.println("西çç人ïŒspaniardïŒå »äºäžæ¡çïŒdogïŒ");
modify($h2){setPet($h1.pet)};
modify($h1){setPet(Pet.dog)};
end
rule "æªåšäººäœåšå·ŠèŸ¹ç第äžäžªæ¿åé"
when
$h1:House(position == 1, nation != Nation.norwegian)
$h2:House(nation == Nation.norwegian)
then
System.out.println("æªåšäººïŒnorwegianïŒäœåšå·ŠèŸ¹ç第äžäžªæ¿åé");
modify($h2){setNation($h1.nation)};
modify($h1){setNation(Nation.norwegian)};
end
rule "黿¿åéçäººåæ¬¢æœkoolsççéŠç"
when
$h1:House(color == Color.yellow, cigarette != Cigarette.kools)
$h2:House(cigarette == Cigarette.kools)
then
System.out.println("黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç");
modify($h2){setCigarette($h1.cigarette)};
modify($h1){setCigarette(Cigarette.kools)};
end
rule "æœchesterfieldsçéŠçç人äžå »ççžç人æ¯é»å± "
when
$h1:House(cigarette == Cigarette.chesterfields, pet != Pet.fox)
$h2:House(pet == Pet.fox)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æœchesterfieldsçéŠçç人äžå »ççžïŒfoxïŒç人æ¯é»å± ");
int tmp = $h3.position;
modify($h3){setPosition($h1.position)};
modify($h1){setPosition(tmp)};
end
rule "æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº"
when
$h1:House(cigarette == Cigarette.chesterfields, pet == Pet.fox)
$h2:House(eval(position - $h1.position == 1) || eval(position -
$h1.position == -1))
then
System.out.println("æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº");
modify($h1){setPet($h2.pet)};
modify($h2){setPet(Pet.fox)};
end
rule "æªåšäººäœåšèè²çæ¿åæèŸ¹"
when
$h1:House(nation == Nation.norwegian)
$h2:House(color == Color.blue)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æªåšäººïŒnorwegianïŒäœåšèè²ïŒblueïŒçæ¿åæèŸ¹");
modify($h1){setNation($h3.nation)};
modify($h3){setNation(Nation.norwegian)};
end
rule "æœwinstonçéŠççäººå »äºäžåªèç"
when
$h1:House(cigarette == Cigarette.winston)
$h2:House(pet == Pet.snails, cigarette != Cigarette.winston)
then
System.out.println("æœwinstonçéŠççäººå »äºäžåªèçïŒSnailsïŒ");
modify($h2){setPet($h1.pet)};
modify($h1){setPet(Pet.snails)};
end
rule "æœLuckyStrikeçéŠççäººåæ¬¢åæ¡åæ±"
when
$h1:House(cigarette == Cigarette.luckyStrike)
$h2:House(drink == Drink.orangeJuice, cigarette !=
Cigarette.luckyStrike)
then
System.out.println("æœLucky StrikeçéŠççäººåæ¬¢åæ¡åæ±ïŒorange juiceïŒ");
modify($h2){setDrink($h1.drink)};
modify($h1){setDrink(Drink.orangeJuice)};
end
rule "ä¹å å °äººåæ¬¢åè¶"
when
$h1:House(nation == Nation.ukrainian)
$h2:House(drink == Drink.tea, nation != Nation.ukrainian)
then
System.out.println("ä¹å å °äººïŒukrainianïŒå欢åè¶ïŒteaïŒ");
modify($h2){setDrink($h1.drink)};
modify($h1){setDrink(Drink.tea)};
end
rule "æ¥æ¬äººæœparliamentsççç"
when
$h1:House(nation == Nation.japanese)
$h2:House(cigarette == Cigarette.parliaments, nation !=
Nation.japanese)
then
System.out.println("æ¥æ¬äººïŒjapaneseïŒæœparliamentsççç");
modify($h2){setCigarette($h1.cigarette)};
modify($h1){setCigarette(Cigarette.parliaments)}
end
rule "æœkoolsççéŠçç人äžå »é©¬ç人æ¯é»å± "
when
$h1:House(cigarette == Cigarette.kools)
$h2:House(pet == Pet.horse)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å± ");
modify($h1){setCigarette($h3.cigarette)};
modify($h3){setCigarette(Cigarette.kools)};
end
rule "忬¢ååå¡ç人äœåšç»¿æ¿åé"
when
$h1:House(drink == Drink.coffee)
$h2:House(color == Color.green, drink != Drink.coffee)
then
System.out.println("忬¢ååå¡ïŒcoffeeïŒç人äœåšç»¿ïŒgreenïŒæ¿åé");
modify($h2){setColor($h1.color)};
modify($h1){setColor(Color.green)};
end
rule "绿æ¿ååšè±¡ççœæ¿åçå³èŸ¹"
when
$h1:House(color == Color.green, position != 1)
$h2:House(color == Color.ivory, position != 5)
$h3:House(eval(position == $h2.position + 1), color != Color.green)
then
System.out.println("绿ïŒgreenïŒæ¿ååšè±¡ççœïŒivoryïŒæ¿åçå³èŸ¹ïŒåŸäžçå³èŸ¹ïŒ");
modify($h1){setColor($h3.color)};
modify($h3){setColor(Color.green)};
end
rule "çœæ¿åå·²ç»åšæå³èŸ¹äº"
when
$h1:House(color == Color.ivory, position == 5)
$h2:House(color == Color.green, position != 1)
$h3:House(eval(position == $h2.position -1))
then
System.out.println("çœæ¿åå·²ç»åšæå³èŸ¹äº");
$h3.setPosition($h1.position);
$h1.setPosition($h2.position - 1);
update($h3);
update($h1);
end
rule "绿æ¿åå·²ç»åšæå·ŠèŸ¹äº"
when
$h1:House(color == Color.green, position == 1)
$h2:House(color == Color.ivory, position != 5)
$h3:House(eval(position == $h2.position + 1))
then
System.out.println("绿æ¿åå·²ç»åšæå·ŠèŸ¹äº");
modify($h3){setPosition($h1.position)};
modify($h1){setPosition($h2.position + 1)};
end
rule "绿æ¿ååšæå·ŠèŸ¹äžçœæ¿ååšæå³èŸ¹"
when
$h1:House(color == Color.green, position == 1)
$h2:House(color == Color.ivory, position == 5)
$h3:House()
$h4:House(eval(position - $h3.position == 1))
then
System.out.println("绿æ¿ååšæå·ŠèŸ¹äžçœæ¿ååšæå³èŸ¹");
modify($h2){setPosition($h3.position)};
modify($h3){setPosition(5)};
modify($h1){setPosition($h4.position)};
modify($h4){setPosition(1)};
end
rule "äžéŽé£äžªæ¿åéçäººåæ¬¢åç奶"
when
$h1:House(position == 3, drink != Drink.milk)
$h2:House(drink == Drink.milk)
then
System.out.println("äžéŽé£äžªæ¿åéçäººåæ¬¢åç奶");
modify($h2){setDrink($h1.drink))};
modify($h1){setDrink(Drink.milk)};
end
rule "output"
when
$h1:House(position == 1)
$h2:House(position == 2)
$h3:House(position == 3)
$h4:House(position == 4)
$h5:House(position == 5)
House(nation == Nation.englishman, color == Color.red)
House(nation == Nation.spaniard, pet == Pet.dog)
House(position == 1, nation == Nation.norwegian)
House(color == Color.yellow, cigarette == Cigarette.kools)
$h6:House(cigarette == Cigarette.chesterfields)
$h7:House(pet == Pet.fox)
eval($h6.position - $h7.position == 1 || $h6.position - $h7.position
== -1)
$h8:House(nation == Nation.norwegian)
$h9:House(color == Color.blue)
eval($h8.position - $h9.position == 1 || $h8.position - $h9.position
== -1)
House(cigarette == Cigarette.winston, pet == Pet.snails)
House(cigarette == Cigarette.luckyStrike, drink ==
Drink.orangeJuice)
House(nation == Nation.ukrainian, drink == Drink.tea)
House(cigarette == Cigarette.parliaments, nation == Nation.japanese)
$h10:House(cigarette == Cigarette.kools)
$h11:House(pet == Pet.horse)
eval($h10.position - $h11.position == 1 || $h10.position -
$h11.position == -1)
House(drink == Drink.coffee, color == Color.green)
$h12:House(color == Color.green)
$h13:House(color == Color.ivory)
eval($h12.position - $h13.position == 1)
House(position == 3, drink == Drink.milk)
then
System.out.println("ä»å·Šå°å³:");
System.out.println("第äžéŽæ¿åæ¯"+$h1.color+"è²ç;äœç"+$h1.nation+"人;å »"+$h1.pet+"å® ç©;æœ"+$h1.cigarette+"çéŠç;å"+$h1.drink+"饮æ;");
System.out.println("第äºéŽæ¿åæ¯"+$h2.color+"è²ç;äœç"+$h2.nation+"人;å »"+$h2.pet+"å® ç©;æœ"+$h2.cigarette+"çéŠç;å"+$h2.drink+"饮æ;");
System.out.println("第äžéŽæ¿åæ¯"+$h3.color+"è²ç;äœç"+$h3.nation+"人;å »"+$h3.pet+"å® ç©;æœ"+$h3.cigarette+"çéŠç;å"+$h3.drink+"饮æ;");
System.out.println("第åéŽæ¿åæ¯"+$h4.color+"è²ç;äœç"+$h4.nation+"人;å »"+$h4.pet+"å® ç©;æœ"+$h4.cigarette+"çéŠç;å"+$h4.drink+"饮æ;");
System.out.println("第äºéŽæ¿åæ¯"+$h5.color+"è²ç;äœç"+$h5.nation+"人;å »"+$h5.pet+"å® ç©;æœ"+$h5.cigarette+"çéŠç;å"+$h5.drink+"饮æ;");
end
There's some unicode character in the file.But it shouldn't bother the
compilation>...<
The rule named 'output' describes when the computation should stop. The
other rules are absorbed from the original 'Zebra puzzle' problem and each
making a little change to the working memory in order to 'approach' the
solution...(I don't know if I'm doing this wrong..)
No matter how I modify this program, it always result in an infinite loop...
For example, the console prints these messages repeatedly:
çœæ¿åå·²ç»åšæå³èŸ¹äº
æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
......................
I worked quite much time on this problem till now, and I referenced another
solution which is programmed in prolog, but still I didn't figured out the
drools solution to this problem.
Could somebody give a hint? Any help is appreciated,
Thanks!
I have some trouble in solving the 'Zebra
Puzzle<http://en.wikipedia.org/wiki/Zebra_Puzzle>'
using drools5.
I defined a class named 'House' to represent the data, and the corresponding
enums as well : Color.java, Nation.java, Pet.java, Drink.java,
Cigarette.java, here are those sources:
House.java:
public class House {
// é¢è²
public Color color;
// æ¿åä»å·Šæ°çäœçœ® 1-5
public int position;
public Nation nation;
public Pet pet;
public Drink drink;
public Cigarette cigarette;
......
Color.java:
public enum Color {
red, yellow, blue, green, ivory
}
Nation.java:
public enum Nation {
englishman, spaniard, norwegian, ukrainian, japanese
}
Pet.java:
public enum Pet {
dog, fox, snails, horse, zebra
}
Drink.java:
public enum Drink {
orangeJuice, tea, coffee, milk, water
}
Cigarette.java:
public enum Cigarette {
kools, chesterfields, winston, luckyStrike, parliaments
}
And this is my drl file:
package com.sample
import com.sample.fh.*
rule "è±åœäººäœåšçº¢è²çæ¿åé"
when
$h1:House(nation == Nation.englishman, color != Color.red)
$h2:House(color == Color.red)
then
System.out.println("è±åœäººïŒenglishmanïŒäœåšçº¢è²ïŒredïŒçæ¿åé");
modify($h2){setColor($h1.color)};
modify($h1){setColor(Color.red)};
end
rule "西ççäººå »äºäžæ¡ç"
when
$h1:House(nation == Nation.spaniard)
$h2:House(pet == Pet.dog, nation != Nation.spaniard)
then
System.out.println("西çç人ïŒspaniardïŒå »äºäžæ¡çïŒdogïŒ");
modify($h2){setPet($h1.pet)};
modify($h1){setPet(Pet.dog)};
end
rule "æªåšäººäœåšå·ŠèŸ¹ç第äžäžªæ¿åé"
when
$h1:House(position == 1, nation != Nation.norwegian)
$h2:House(nation == Nation.norwegian)
then
System.out.println("æªåšäººïŒnorwegianïŒäœåšå·ŠèŸ¹ç第äžäžªæ¿åé");
modify($h2){setNation($h1.nation)};
modify($h1){setNation(Nation.norwegian)};
end
rule "黿¿åéçäººåæ¬¢æœkoolsççéŠç"
when
$h1:House(color == Color.yellow, cigarette != Cigarette.kools)
$h2:House(cigarette == Cigarette.kools)
then
System.out.println("黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç");
modify($h2){setCigarette($h1.cigarette)};
modify($h1){setCigarette(Cigarette.kools)};
end
rule "æœchesterfieldsçéŠçç人äžå »ççžç人æ¯é»å± "
when
$h1:House(cigarette == Cigarette.chesterfields, pet != Pet.fox)
$h2:House(pet == Pet.fox)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æœchesterfieldsçéŠçç人äžå »ççžïŒfoxïŒç人æ¯é»å± ");
int tmp = $h3.position;
modify($h3){setPosition($h1.position)};
modify($h1){setPosition(tmp)};
end
rule "æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº"
when
$h1:House(cigarette == Cigarette.chesterfields, pet == Pet.fox)
$h2:House(eval(position - $h1.position == 1) || eval(position -
$h1.position == -1))
then
System.out.println("æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº");
modify($h1){setPet($h2.pet)};
modify($h2){setPet(Pet.fox)};
end
rule "æªåšäººäœåšèè²çæ¿åæèŸ¹"
when
$h1:House(nation == Nation.norwegian)
$h2:House(color == Color.blue)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æªåšäººïŒnorwegianïŒäœåšèè²ïŒblueïŒçæ¿åæèŸ¹");
modify($h1){setNation($h3.nation)};
modify($h3){setNation(Nation.norwegian)};
end
rule "æœwinstonçéŠççäººå »äºäžåªèç"
when
$h1:House(cigarette == Cigarette.winston)
$h2:House(pet == Pet.snails, cigarette != Cigarette.winston)
then
System.out.println("æœwinstonçéŠççäººå »äºäžåªèçïŒSnailsïŒ");
modify($h2){setPet($h1.pet)};
modify($h1){setPet(Pet.snails)};
end
rule "æœLuckyStrikeçéŠççäººåæ¬¢åæ¡åæ±"
when
$h1:House(cigarette == Cigarette.luckyStrike)
$h2:House(drink == Drink.orangeJuice, cigarette !=
Cigarette.luckyStrike)
then
System.out.println("æœLucky StrikeçéŠççäººåæ¬¢åæ¡åæ±ïŒorange juiceïŒ");
modify($h2){setDrink($h1.drink)};
modify($h1){setDrink(Drink.orangeJuice)};
end
rule "ä¹å å °äººåæ¬¢åè¶"
when
$h1:House(nation == Nation.ukrainian)
$h2:House(drink == Drink.tea, nation != Nation.ukrainian)
then
System.out.println("ä¹å å °äººïŒukrainianïŒå欢åè¶ïŒteaïŒ");
modify($h2){setDrink($h1.drink)};
modify($h1){setDrink(Drink.tea)};
end
rule "æ¥æ¬äººæœparliamentsççç"
when
$h1:House(nation == Nation.japanese)
$h2:House(cigarette == Cigarette.parliaments, nation !=
Nation.japanese)
then
System.out.println("æ¥æ¬äººïŒjapaneseïŒæœparliamentsççç");
modify($h2){setCigarette($h1.cigarette)};
modify($h1){setCigarette(Cigarette.parliaments)}
end
rule "æœkoolsççéŠçç人äžå »é©¬ç人æ¯é»å± "
when
$h1:House(cigarette == Cigarette.kools)
$h2:House(pet == Pet.horse)
$h3:House(eval(position - $h2.position == 1) || eval(position -
$h2.position == -1))
eval($h1.position - $h2.position != 1 && $h1.position - $h2.position
!= -1)
then
System.out.println("æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å± ");
modify($h1){setCigarette($h3.cigarette)};
modify($h3){setCigarette(Cigarette.kools)};
end
rule "忬¢ååå¡ç人äœåšç»¿æ¿åé"
when
$h1:House(drink == Drink.coffee)
$h2:House(color == Color.green, drink != Drink.coffee)
then
System.out.println("忬¢ååå¡ïŒcoffeeïŒç人äœåšç»¿ïŒgreenïŒæ¿åé");
modify($h2){setColor($h1.color)};
modify($h1){setColor(Color.green)};
end
rule "绿æ¿ååšè±¡ççœæ¿åçå³èŸ¹"
when
$h1:House(color == Color.green, position != 1)
$h2:House(color == Color.ivory, position != 5)
$h3:House(eval(position == $h2.position + 1), color != Color.green)
then
System.out.println("绿ïŒgreenïŒæ¿ååšè±¡ççœïŒivoryïŒæ¿åçå³èŸ¹ïŒåŸäžçå³èŸ¹ïŒ");
modify($h1){setColor($h3.color)};
modify($h3){setColor(Color.green)};
end
rule "çœæ¿åå·²ç»åšæå³èŸ¹äº"
when
$h1:House(color == Color.ivory, position == 5)
$h2:House(color == Color.green, position != 1)
$h3:House(eval(position == $h2.position -1))
then
System.out.println("çœæ¿åå·²ç»åšæå³èŸ¹äº");
$h3.setPosition($h1.position);
$h1.setPosition($h2.position - 1);
update($h3);
update($h1);
end
rule "绿æ¿åå·²ç»åšæå·ŠèŸ¹äº"
when
$h1:House(color == Color.green, position == 1)
$h2:House(color == Color.ivory, position != 5)
$h3:House(eval(position == $h2.position + 1))
then
System.out.println("绿æ¿åå·²ç»åšæå·ŠèŸ¹äº");
modify($h3){setPosition($h1.position)};
modify($h1){setPosition($h2.position + 1)};
end
rule "绿æ¿ååšæå·ŠèŸ¹äžçœæ¿ååšæå³èŸ¹"
when
$h1:House(color == Color.green, position == 1)
$h2:House(color == Color.ivory, position == 5)
$h3:House()
$h4:House(eval(position - $h3.position == 1))
then
System.out.println("绿æ¿ååšæå·ŠèŸ¹äžçœæ¿ååšæå³èŸ¹");
modify($h2){setPosition($h3.position)};
modify($h3){setPosition(5)};
modify($h1){setPosition($h4.position)};
modify($h4){setPosition(1)};
end
rule "äžéŽé£äžªæ¿åéçäººåæ¬¢åç奶"
when
$h1:House(position == 3, drink != Drink.milk)
$h2:House(drink == Drink.milk)
then
System.out.println("äžéŽé£äžªæ¿åéçäººåæ¬¢åç奶");
modify($h2){setDrink($h1.drink))};
modify($h1){setDrink(Drink.milk)};
end
rule "output"
when
$h1:House(position == 1)
$h2:House(position == 2)
$h3:House(position == 3)
$h4:House(position == 4)
$h5:House(position == 5)
House(nation == Nation.englishman, color == Color.red)
House(nation == Nation.spaniard, pet == Pet.dog)
House(position == 1, nation == Nation.norwegian)
House(color == Color.yellow, cigarette == Cigarette.kools)
$h6:House(cigarette == Cigarette.chesterfields)
$h7:House(pet == Pet.fox)
eval($h6.position - $h7.position == 1 || $h6.position - $h7.position
== -1)
$h8:House(nation == Nation.norwegian)
$h9:House(color == Color.blue)
eval($h8.position - $h9.position == 1 || $h8.position - $h9.position
== -1)
House(cigarette == Cigarette.winston, pet == Pet.snails)
House(cigarette == Cigarette.luckyStrike, drink ==
Drink.orangeJuice)
House(nation == Nation.ukrainian, drink == Drink.tea)
House(cigarette == Cigarette.parliaments, nation == Nation.japanese)
$h10:House(cigarette == Cigarette.kools)
$h11:House(pet == Pet.horse)
eval($h10.position - $h11.position == 1 || $h10.position -
$h11.position == -1)
House(drink == Drink.coffee, color == Color.green)
$h12:House(color == Color.green)
$h13:House(color == Color.ivory)
eval($h12.position - $h13.position == 1)
House(position == 3, drink == Drink.milk)
then
System.out.println("ä»å·Šå°å³:");
System.out.println("第äžéŽæ¿åæ¯"+$h1.color+"è²ç;äœç"+$h1.nation+"人;å »"+$h1.pet+"å® ç©;æœ"+$h1.cigarette+"çéŠç;å"+$h1.drink+"饮æ;");
System.out.println("第äºéŽæ¿åæ¯"+$h2.color+"è²ç;äœç"+$h2.nation+"人;å »"+$h2.pet+"å® ç©;æœ"+$h2.cigarette+"çéŠç;å"+$h2.drink+"饮æ;");
System.out.println("第äžéŽæ¿åæ¯"+$h3.color+"è²ç;äœç"+$h3.nation+"人;å »"+$h3.pet+"å® ç©;æœ"+$h3.cigarette+"çéŠç;å"+$h3.drink+"饮æ;");
System.out.println("第åéŽæ¿åæ¯"+$h4.color+"è²ç;äœç"+$h4.nation+"人;å »"+$h4.pet+"å® ç©;æœ"+$h4.cigarette+"çéŠç;å"+$h4.drink+"饮æ;");
System.out.println("第äºéŽæ¿åæ¯"+$h5.color+"è²ç;äœç"+$h5.nation+"人;å »"+$h5.pet+"å® ç©;æœ"+$h5.cigarette+"çéŠç;å"+$h5.drink+"饮æ;");
end
There's some unicode character in the file.But it shouldn't bother the
compilation>...<
The rule named 'output' describes when the computation should stop. The
other rules are absorbed from the original 'Zebra puzzle' problem and each
making a little change to the working memory in order to 'approach' the
solution...(I don't know if I'm doing this wrong..)
No matter how I modify this program, it always result in an infinite loop...
For example, the console prints these messages repeatedly:
çœæ¿åå·²ç»åšæå³èŸ¹äº
æœchesterfieldsçéŠçç人äžå »ççžç人æ¯åäžäºº
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
æœkoolsççéŠçç人äžå »é©¬ïŒhorseïŒç人æ¯é»å±
黿¿åïŒyellowïŒéçäººåæ¬¢æœkoolsççéŠç
......................
I worked quite much time on this problem till now, and I referenced another
solution which is programmed in prolog, but still I didn't figured out the
drools solution to this problem.
Could somebody give a hint? Any help is appreciated,
Thanks!
--
Regards.
Miles. Wen
Regards.
Miles. Wen