Startseite → Logikrätsel → Im Shoppingcenter → Lösung
Lösung: Im Shoppingcenter
Lösung
Schritt 1
- Die zweite Person in der Schlange möchte ein gelbes Oberteil kaufen.
- Die letzte Person in der Schlange ist 30 Jahre alt.
- Die dritte Person in der Schlange möchte ein Oberteil in Größe M erwerben.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Dana, Ingo, Jessica, Sören, Valerie, 26, 27, 33, 35, Hemd, Poloshirt, Pullover, Sweatshirt, T-Shirt, Blau, Grün, Rot, Schwarz, L, S, XL, XS
Schritt 2
- Die jüngste Person möchte ein gelbes Oberteil erwerben.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Dana, Ingo, Jessica, Sören, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, Sweatshirt, T-Shirt, Blau, Grün, Rot, Schwarz, L, S, XL, XS
Schritt 3
- Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
- Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
- Sören möchte ein Sweatshirt kaufen. Die Person, die direkt vor ihm steht, ist älter als die Person, die direkt hinter ihm steht.
- Ingo benötigt ein Oberteil in Größe L.
- Die Person, die direkt hinter Valerie steht, will ein rotes Oberteil kaufen, das größer als Größe S ist.
Hinter Dana, Jessica, Sören und Valerie muss also jeweils noch mindestens eine Person stehen. Der letzte in der Schlange ist deshalb Ingo.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Dana, Jessica, Sören, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, Sweatshirt, T-Shirt, Blau, Grün, Rot, Schwarz, S, XL, XS
Schritt 4
- Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
- Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
- Sören möchte ein Sweatshirt kaufen. Die Person, die direkt vor ihm steht, ist älter als die Person, die direkt hinter ihm steht.
- Die Person, die direkt hinter Valerie steht, will ein rotes Oberteil kaufen, das größer als Größe S ist.
Sören kann nicht ganz vorne stehen, da vor ihm ja noch jemand stehen muss.
Auch die Position 3 scheidet aus, da auf Position 2 ja schon die jüngste Person steht.
Wenn Sören an Position 4 stehen würde, dann müsste Valerie an Position 2 oder 3 stehen, da Position 1 für sie ausscheidet.
- Wenn Valerie an Position 2 stehen würde, müssten Dana an Position 1 und Jessica an Position 3 stehen. Jessica kann aber nicht vor Sören stehen, da er ein Sweatshirt kaufen möchte.
- Wenn Valerie an Position 3 stehen würde, dann müsste Sören ein Oberteil in Größe XL kaufen wollen. Größe XL ist aber schon durch Dana belegt.
Position 4 scheidet damit für Sören aus. Er kann also nur an Position 2 stehen.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Dana, Jessica, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz, S, XL, XS
Schritt 5
- Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
- Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
- Die Person, die direkt hinter Valerie steht, will ein rotes Oberteil kaufen, das größer als Größe S ist.
Weder Jessica noch Valerie können deshalb ganz vorn stehen. Übrig bleibt nur Dana.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Jessica, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz, S, XS
Schritt 6
- Die älteste Person will das Oberteil in der kleinsten Größe kaufen.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Jessica, Valerie, 27, 33, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz
Schritt 7
- Sören möchte ein Sweatshirt kaufen. Die Person, die direkt vor ihm steht, ist älter als die Person, die direkt hinter ihm steht.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Jessica, Valerie, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz
Schritt 8
- Die Person, die direkt hinter Valerie steht, will ein rotes Oberteil kaufen, das größer als Größe S ist.
Damit scheidet Position 3 für Valerie aus.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Jessica, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Schwarz
Schritt 9
- Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
- Jessica will ein Hemd kaufen.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Pullover, T-Shirt, Blau, Grün, Schwarz
Schritt 10
- Das T-Shirt ist nicht rot.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Blau, Grün, Schwarz
Schritt 11
- Das Poloshirt ist rot, gelb oder grün.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Übrig: Blau, Schwarz
Schritt 12
- Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
Position | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Person | Dana | Sören | Jessica | Valerie | Ingo |
Alter | 33 | 26 | 27 | 35 | 30 |
Oberteil | T-Shirt | Sweatshirt | Hemd | Poloshirt | Pullover |
Farbe | Blau | Gelb | Schwarz | Grün | Rot |
Größe | XL | S | M | XS | L |
Lösungssuche mit Prolog
Dieses Rätsel lässt sich gut mit Hilfe der logischen Programmiersprache „Prolog“ lösen:
- % smaller(A, B):
- % A ist eine kleinere Groesse als B.
- smaller(A, B) :- before(A, B, [xs, s, m, l, xl]).
- % before(A, B, L):
- % A steht in der Liste L vor B.
- before(A, B, [A|R]) :- member(B, R).
- before(A, B, [_|R]) :- before(A, B, R).
- % directBefore(A, B, L):
- % A steht in der Liste L direkt vor B.
- directBefore(A, B, [A,B|_]).
- directBefore(A, B, [_|R]) :- directBefore(A, B, R).
- % Implementierung des Raetsels
- raetsel :-
- % Personen in der Kassenschlange
- Schlange = [Eins, Zwei, Drei, Vier, Fuenf],
- % Vorderste Person in der Schlange
- Eins = [Name1, Alter1, Oberteil1, Farbe1, Groesse1],
- % 2. Person von vorn
- Zwei = [Name2, Alter2, Oberteil2, Farbe2, Groesse2],
- % 3. Person von vorn
- Drei = [Name3, Alter3, Oberteil3, Farbe3, Groesse3],
- % 4. Person von vorn
- Vier = [Name4, Alter4, Oberteil4, Farbe4, Groesse4],
- % Letzte Person in der Schlange
- Fuenf = [Name5, Alter5, Oberteil5, Farbe5, Groesse5],
- % Definition der Alter
- permutation(
- [Alter1, Alter2, Alter3, Alter4, Alter5],
- [26, 27, 30, 33, 35]
- ),
- % Definition der Farben
- permutation(
- [Farbe1, Farbe2, Farbe3, Farbe4, Farbe5],
- [blau, gelb, gruen, rot, schwarz]
- ),
- % Dana, die ein Oberteil in Groesse XL erwerben moechte,
- % steht weiter vorn als die Person, die ein schwarzes
- % Oberteil kaufen will.
- before([dana, _, _, _, xl], [_, _, _, schwarz, _], Schlange),
- % Jessica steht direkt vor der Person, die ein
- % Poloshirt erwerben moechte.
- directBefore([jessica, _, _, _, _], [_, _, poloshirt, _, _], Schlange),
- % Die zweite Person in der Schlange moechte ein
- % gelbes Oberteil kaufen.
- Farbe2 = gelb,
- % Das T-Shirt ist nicht rot.
- member([_, _, tshirt, F1, _], Schlange),
- F1 \= rot,
- % Soeren moechte ein Sweatshirt kaufen. Die Person,
- % die direkt vor ihm steht, ist aelter als die
- % Person, die direkt hinter ihm steht.
- directBefore([_, A1, _, _, _], [soeren, _, sweatshirt, _, _], Schlange),
- directBefore([soeren, _, sweatshirt, _, _], [_, A2, _, _, _], Schlange),
- A1 > A2,
- % Ingo benoetigt ein Oberteil in Groesse L.
- member([ingo, _, _, _, l], Schlange),
- % Die letzte Person in der Schlange ist
- % 30 Jahre alt.
- Alter5 = 30,
- % Die aelteste Person will das Oberteil in
- % der kleinsten Groesse kaufen.
- member([_, 35, _, _, xs], Schlange),
- % Die Person, die direkt hinter Valerie steht,
- % will ein rotes Oberteil kaufen, das groesser
- % als Groesse S ist.
- directBefore([valerie, _, _, _, _], [_, _, _, rot, G1], Schlange),
- smaller(s, G1),
- % Die juengste Person moechte ein gelbes
- % Oberteil erwerben.
- member([_, 26, _, gelb, _], Schlange),
- % Jessica will ein Hemd kaufen.
- member([jessica, _, hemd, _, _], Schlange),
- % Die dritte Person in der Schlange moechte
- % ein Oberteil in Groesse M erwerben.
- Groesse3 = m,
- % Das Poloshirt ist rot, gelb oder gruen.
- member([_, _, poloshirt, F2, _], Schlange),
- member(F2, [rot, gelb, gruen]),
- % Definition der Personen
- permutation(
- [Name1, Name2, Name3, Name4, Name5],
- [dana, ingo, jessica, soeren, valerie]
- ),
- % Definition der Oberteile
- permutation(
- [Oberteil1, Oberteil2, Oberteil3, Oberteil4, Oberteil5],
- [hemd, poloshirt, pullover, sweatshirt, tshirt]
- ),
- % Definition der Groessen
- permutation(
- [Groesse1, Groesse2, Groesse3, Groesse4, Groesse5],
- [xs, s, m, l, xl]
- ),
- % Loesung ausgeben
- write(Schlange),
- write('\n'),
- % Weitere Loesungen suchen
- fail.