tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1858
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    StressMaker StressMaker ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    18
    Hallo,

    Auf der Suche nach einer Lösung für das Einsteinrätsel habe ich folgenden Perl-Code gefunden.
    Leider habe ich keine Ahnung, wie er zu lesen ist.
    Ins besondere verstehe ich das Zeichen " :- " nicht.
    Kann mir vieleicht einer einen Tipp geben, wie ich den Code zu lesen habe?

    Ganz unten ist auch nochmal die Fragestellung.

    MfG

    ------------------------------

    /*
    Idee: wir ordnen Eigenschaften als Variablen (z.B. Hundebesitzer, Teetrinker)
    den Hausbezeichnungen zu (die als Konstanten repraesentiert sind)
    */


    /* Beziehungen zwischen den Haeusern:
    - wir nehmen an, die Haeuser stehen in einer Reihe und
    beginnen mit der Zaehlung von links
    */
    stehtLinksVon(erstesHaus, zweitesHaus).
    stehtLinksVon(zweitesHaus, drittesHaus).
    stehtLinksVon(drittesHaus, viertesHaus).
    stehtLinksVon(viertesHaus, fuenftesHaus).

    wohntLinksVon(X, Y) :- stehtLinksVon(X, Y).

    wohntLinksVon(X, Y) :-
    stehtLinksVon(X, Z),
    wohntLinksVon(Z, Y).

    wohntRechtsVon(X, Y) :-
    wohntLinksVon(Y, X).

    wohntNeben(X, Y) :-
    stehtLinksVon(X, Y).

    wohntNeben(X, Y) :-
    stehtLinksVon(Y, X).

    /*
    Alle gegenseitigen Ausschlüsse:
    */

    identisch(X, Y) :-
    X = Y.

    nichtIdentisch(X, Y) :-
    wohntLinksVon(X, Y).

    nichtIdentisch(X, Y) :-
    wohntRechtsVon(X, Y).

    disjunkteEigenschaften(P1, P2, P3, P4, P5) :-
    nichtIdentisch(P1, P2),
    nichtIdentisch(P1, P3),
    nichtIdentisch(P1, P4),
    nichtIdentisch(P1, P5),
    nichtIdentisch(P2, P3),
    nichtIdentisch(P2, P4),
    nichtIdentisch(P2, P5),
    nichtIdentisch(P3, P4),
    nichtIdentisch(P3, P5),
    nichtIdentisch(P4, P5).

    /*
    Alle Aussagen:
    */
    welt(Zebrahalter, Daene, Norweger, Brite, Schwede, Deutscher) :-
    identisch(Brite, RotesHaus),
    identisch(Schwede, Hundehalter),
    identisch(Daene, Teetrinker),
    stehtLinksVon(GruenesHaus, WeissesHaus),
    identisch(GruenesHaus, Kaffeetrinker),
    identisch(PallMallRaucher, Vogelhalter),
    identisch(drittesHaus, Milchtrinker),
    identisch(GelbesHaus, DunhillRaucher),
    identisch(Norweger, erstesHaus),
    wohntNeben(MarlboroRaucher, Katzenhalter),
    wohntNeben(Pferdehalter, DunhillRaucher),
    identisch(WinfieldRaucher, Biertrinker),
    wohntNeben(Norweger, BlauesHaus),
    identisch(Deutscher, RothmansRaucher),
    wohntNeben(MarlboroRaucher, Wassertrinker),
    disjunkteEigenschaften(Brite, Schwede, Daene, Norweger, Deutscher),
    disjunkteEigenschaften(RotesHaus, GruenesHaus, WeissesHaus, GelbesHaus, BlauesHaus),
    disjunkteEigenschaften(Hundehalter, Vogelhalter, Katzenhalter, Pferdehalter, Zebrahalter),
    disjunkteEigenschaften(Teetrinker, Kaffeetrinker, Milchtrinker, Biertrinker, Wassertrinker),
    disjunkteEigenschaften(PallMallRaucher, DunhillRaucher, WinfieldRaucher, RothmansRaucher, MarlboroRaucher).

    zebrahat(Nation) :-
    welt(Z,Dae,N,B,S,De),
    (
    (Z=Dae, Nation=daene);
    (Z=S, Nation=schwede);
    (Z=B, Nation=brite);
    (Z=N, Nation=norweger);
    (Z=De, Nation=deutsche)
    ).




    -----------------------------------------


    [list=1][*]Es gibt fünf Häuser mit je einer anderen Farbe.[*]In jedem Haus wohnt eine Person einer anderen Nationalität.[*]Jeder Hausbewohner bevorzugt ein bestimmtes Getränk, raucht eine
    bestimmte Zigarettenmarke und hält ein bestimmtes Haustier.[*]KEINE der 5 Personen trinkt das gleiche Getränk, raucht die gleichen
    Zigaretten oder hält das gleiche Tier wie einer seiner Nachbarn.[/list=a]

    Frage: Wem gehört der Fisch?

    Ihre Hinweise:

    1. Der Brite lebt im roten Haus
    2. Der Schwede hält einen Hund
    3. Der Däne trinkt gerne Tee
    4. Das grüne Haus steht links vom weißen Haus
    5. Der Besitzer des grünen Hauses trinkt Kaffee
    6. Die Person, die Pall Mall raucht, hält einen Vogel
    7. Der Mann, der im mittleren Haus wohnt, trinkt Milch
    8. Der Besitzer des gelben Hauses raucht Dunhill
    9. Der Norwege wohnt im ersten Hausl
    10. Der Marlboro-Raucher wohnt neben dem, der eine Katze hält
    11. Der Mann, der ein Pferd hält, wohnt neben dem, der Dunhill raucht
    12. Der Winfield-Raucher trinkt gerne Bier
    13. Der Norwege wohnt neben dem blauen Haus
    14. Der Deutsche raucht Rothmanns
    15. Der Marlboro-Raucher hat einen Nachbarn, der Wasser trinkt
     

  2. #2
    Avatar von profy
    profy profy ist offline Mitglied Silber
    Registriert seit
    Nov 2003
    Ort
    Grömitz
    Beiträge
    94
    ohne mir alles durchzulesen...
    Kann es sein, dass :- = ; ist?
     

  3. #3
    Trice Trice ist offline Mitglied Bronze
    Registriert seit
    Apr 2004
    Beiträge
    35
    Das is kein Perl, das is Prolog. Genauer kenn ich mich da leider auch net aus.
     

  4. #4
    Holger Schwarz Holger Schwarz ist offline Grünschnabel
    Registriert seit
    Nov 2004
    Beiträge
    1
    bedingung_eins(A) :- bedingung_zwei(A).

    Das ":-" Zeichen bedeutet Bedingung_eins gilt dann wenn Bedingung_zwei wahr ist.
    Max
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 19.08.10, 20:20
  2. Verstehe CSS nicht
    Von Soapp im Forum CSS
    Antworten: 1
    Letzter Beitrag: 21.05.10, 19:46
  3. Ich verstehe es nicht...
    Von MsvP@habdichliebhasi im Forum CSS
    Antworten: 10
    Letzter Beitrag: 02.11.07, 18:48
  4. Antworten: 1
    Letzter Beitrag: 09.02.07, 14:00
  5. Antworten: 8
    Letzter Beitrag: 06.06.04, 12:49