StartseiteLogikrätselIm ShoppingcenterLösung

Lösung: Im Shoppingcenter

Rätsel einblenden

Lösung

Ausblenden

Schritt 1

  1. Die zweite Person in der Schlange möchte ein gelbes Oberteil kaufen.
  2. Die letzte Person in der Schlange ist 30 Jahre alt.
  3. Die dritte Person in der Schlange möchte ein Oberteil in Größe M erwerben.
Position 1 2 3 4 5
Person
Alter30
Oberteil
FarbeGelb
GrößeM

Ü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

  1. Die jüngste Person möchte ein gelbes Oberteil erwerben.
Position 1 2 3 4 5
Person
Alter2630
Oberteil
FarbeGelb
GrößeM

Ü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

  1. Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
  2. Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
  3. Sören möchte ein Sweatshirt kaufen. Die Person, die direkt vor ihm steht, ist älter als die Person, die direkt hinter ihm steht.
  4. Ingo benötigt ein Oberteil in Größe L.
  5. 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
PersonIngo
Alter2630
Oberteil
FarbeGelb
GrößeML

Ü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

  1. Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
  2. Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
  3. Sören möchte ein Sweatshirt kaufen. Die Person, die direkt vor ihm steht, ist älter als die Person, die direkt hinter ihm steht.
  4. 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.

Position 4 scheidet damit für Sören aus. Er kann also nur an Position 2 stehen.

Position 1 2 3 4 5
PersonSörenIngo
Alter2630
OberteilSweatshirt
FarbeGelb
GrößeML

Übrig: Dana, Jessica, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz, S, XL, XS

Schritt 5

  1. Dana, die ein Oberteil in Größe XL erwerben möchte, steht weiter vorn als die Person, die ein schwarzes Oberteil kaufen will.
  2. Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
  3. 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
PersonDanaSörenIngo
Alter2630
OberteilSweatshirt
FarbeGelb
GrößeXLML

Übrig: Jessica, Valerie, 27, 33, 35, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz, S, XS

Schritt 6

  1. Die älteste Person will das Oberteil in der kleinsten Größe kaufen.
Position 1 2 3 4 5
PersonDanaSörenIngo
Alter263530
OberteilSweatshirt
FarbeGelb
GrößeXLSMXSL

Übrig: Jessica, Valerie, 27, 33, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz

Schritt 7

  1. 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
PersonDanaSörenIngo
Alter3326273530
OberteilSweatshirt
FarbeGelb
GrößeXLSMXSL

Übrig: Jessica, Valerie, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Rot, Schwarz

Schritt 8

  1. 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
PersonDanaSörenValerieIngo
Alter3326273530
OberteilSweatshirt
FarbeGelbRot
GrößeXLSMXSL

Übrig: Jessica, Hemd, Poloshirt, Pullover, T-Shirt, Blau, Grün, Schwarz

Schritt 9

  1. Jessica steht direkt vor der Person, die ein Poloshirt erwerben möchte.
  2. Jessica will ein Hemd kaufen.
Position 1 2 3 4 5
PersonDanaSörenJessicaValerieIngo
Alter3326273530
OberteilSweatshirtHemdPoloshirt
FarbeGelbRot
GrößeXLSMXSL

Übrig: Pullover, T-Shirt, Blau, Grün, Schwarz

Schritt 10

  1. Das T-Shirt ist nicht rot.
Position 1 2 3 4 5
PersonDanaSörenJessicaValerieIngo
Alter3326273530
OberteilT-ShirtSweatshirtHemdPoloshirtPullover
FarbeGelbRot
GrößeXLSMXSL

Übrig: Blau, Grün, Schwarz

Schritt 11

  1. Das Poloshirt ist rot, gelb oder grün.
Position 1 2 3 4 5
PersonDanaSörenJessicaValerieIngo
Alter3326273530
OberteilT-ShirtSweatshirtHemdPoloshirtPullover
FarbeGelbGrünRot
GrößeXLSMXSL

Übrig: Blau, Schwarz

Ausblenden

Schritt 12

  1. 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
PersonDanaSörenJessicaValerieIngo
Alter3326273530
OberteilT-ShirtSweatshirtHemdPoloshirtPullover
FarbeBlauGelbSchwarzGrünRot
GrößeXLSMXSL

Lösungssuche mit Prolog

Dieses Rätsel lässt sich gut mit Hilfe der logischen Programmiersprache „Prolog“ lösen:

  1. % smaller(A, B):
  2. % A ist eine kleinere Groesse als B.
  3. smaller(A, B) :- before(A, B, [xs, s, m, l, xl]).

  4. % before(A, B, L):
  5. % A steht in der Liste L vor B.
  6. before(A, B, [A|R]) :- member(B, R).
  7. before(A, B, [_|R]) :- before(A, B, R).

  8. % directBefore(A, B, L):
  9. % A steht in der Liste L direkt vor B.
  10. directBefore(A, B, [A,B|_]).
  11. directBefore(A, B, [_|R]) :- directBefore(A, B, R).

  12. % Implementierung des Raetsels
  13. raetsel :-
  14.   % Personen in der Kassenschlange
  15.   Schlange = [Eins, Zwei, Drei, Vier, Fuenf],

  16.   % Vorderste Person in der Schlange
  17.   Eins = [Name1, Alter1, Oberteil1, Farbe1, Groesse1],

  18.   % 2. Person von vorn
  19.   Zwei = [Name2, Alter2, Oberteil2, Farbe2, Groesse2],

  20.   % 3. Person von vorn
  21.   Drei = [Name3, Alter3, Oberteil3, Farbe3, Groesse3],

  22.   % 4. Person von vorn
  23.   Vier = [Name4, Alter4, Oberteil4, Farbe4, Groesse4],

  24.   % Letzte Person in der Schlange
  25.   Fuenf = [Name5, Alter5, Oberteil5, Farbe5, Groesse5],

  26.   % Definition der Alter
  27.   permutation(
  28.   [Alter1, Alter2, Alter3, Alter4, Alter5],
  29.   [26, 27, 30, 33, 35]
  30.   ),

  31.   % Definition der Farben
  32.   permutation(
  33.   [Farbe1, Farbe2, Farbe3, Farbe4, Farbe5],
  34.   [blau, gelb, gruen, rot, schwarz]
  35.   ),

  36.   % Dana, die ein Oberteil in Groesse XL erwerben moechte,
  37.   % steht weiter vorn als die Person, die ein schwarzes
  38.   % Oberteil kaufen will.
  39.   before([dana, _, _, _, xl], [_, _, _, schwarz, _], Schlange),

  40.   % Jessica steht direkt vor der Person, die ein
  41.   % Poloshirt erwerben moechte.
  42.   directBefore([jessica, _, _, _, _], [_, _, poloshirt, _, _], Schlange),

  43.   % Die zweite Person in der Schlange moechte ein
  44.   % gelbes Oberteil kaufen.
  45.   Farbe2 = gelb,

  46.   % Das T-Shirt ist nicht rot.
  47.   member([_, _, tshirt, F1, _], Schlange),
  48.   F1 \= rot,

  49.   % Soeren moechte ein Sweatshirt kaufen. Die Person,
  50.   % die direkt vor ihm steht, ist aelter als die
  51.   % Person, die direkt hinter ihm steht.
  52.   directBefore([_, A1, _, _, _], [soeren, _, sweatshirt, _, _], Schlange),
  53.   directBefore([soeren, _, sweatshirt, _, _], [_, A2, _, _, _], Schlange),
  54.   A1 > A2,

  55.   % Ingo benoetigt ein Oberteil in Groesse L.
  56.   member([ingo, _, _, _, l], Schlange),

  57.   % Die letzte Person in der Schlange ist
  58.   % 30 Jahre alt.
  59.   Alter5 = 30,

  60.   % Die aelteste Person will das Oberteil in
  61.   % der kleinsten Groesse kaufen.
  62.   member([_, 35, _, _, xs], Schlange),

  63.   % Die Person, die direkt hinter Valerie steht,
  64.   % will ein rotes Oberteil kaufen, das groesser
  65.   % als Groesse S ist.
  66.   directBefore([valerie, _, _, _, _], [_, _, _, rot, G1], Schlange),
  67.   smaller(s, G1),

  68.   % Die juengste Person moechte ein gelbes
  69.   % Oberteil erwerben.
  70.   member([_, 26, _, gelb, _], Schlange),

  71.   % Jessica will ein Hemd kaufen.
  72.   member([jessica, _, hemd, _, _], Schlange),

  73.   % Die dritte Person in der Schlange moechte
  74.   % ein Oberteil in Groesse M erwerben.
  75.   Groesse3 = m,

  76.   % Das Poloshirt ist rot, gelb oder gruen.
  77.   member([_, _, poloshirt, F2, _], Schlange),
  78.   member(F2, [rot, gelb, gruen]),

  79.   % Definition der Personen
  80.   permutation(
  81.   [Name1, Name2, Name3, Name4, Name5],
  82.   [dana, ingo, jessica, soeren, valerie]
  83.   ),

  84.   % Definition der Oberteile
  85.   permutation(
  86.   [Oberteil1, Oberteil2, Oberteil3, Oberteil4, Oberteil5],
  87.   [hemd, poloshirt, pullover, sweatshirt, tshirt]
  88.   ),

  89.   % Definition der Groessen
  90.   permutation(
  91.   [Groesse1, Groesse2, Groesse3, Groesse4, Groesse5],
  92.   [xs, s, m, l, xl]
  93.   ),

  94.   % Loesung ausgeben
  95.   write(Schlange),
  96.   write('\n'),

  97.   % Weitere Loesungen suchen
  98.   fail.