Skip to content

Instantly share code, notes, and snippets.

@noniq
Last active October 22, 2016 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noniq/366338 to your computer and use it in GitHub Desktop.
Save noniq/366338 to your computer and use it in GitHub Desktop.
% Lösung des aktuellen (04/2010) P.M.-LogikRätsels
% ================================================
%
% http://www.pm-magazin.de/de/onlinetraining/logik_trainer/logikraetsel.asp
%
% Der Brite Samuel Farwell gehört zu jenen Pionieren des modernen Segelsports,
% die heute kaum noch jemand kennt. Mehrfach versuchte er zu Beginn des
% 20. Jahrhunderts alleine in seinem Boot die Welt zu umsegeln – ohne jemals
% dieses hoch gesteckte Ziel zu erreichen.
%
% In welchem Jahr brach der Segler welchen Törn ab (Startort, geplantes und
% tatsächliches Ziel)?
%
% Hinweise
% --------
%
% - Den in Bordeaux abgebrochenen Segeltörn hatte Samuel Farwell irgendwann
% nach dem Gibraltar-Törn unternommen und ein Jahr vor dem Start in Brighton.
%
% - Die Fahrt nach Algier endete ungewollt in Dünkirchen.
%
% - Der Versuch, den Samuel in Dover startete, fand später, aber nicht genau
% drei Jahre später als die Segelmember statt, die in Calais zu Ende ging.
%
% - Worthing war nicht der Startort des Jahres 1901, und der in Worthing
% begonnene Törn endete nicht in Plymouth.
%
% - Im Jahr 1903 versegelte sich Samuel Farwell derart, dass er völlig
% enttäuscht in Torquay an Land ging.
%
% - Nach Tanger brach der Segler früher auf als nach Tunis, jedoch später
% als zur Insel Madeira.
%
% - Seinen letzten Versuch, die Welt zu umsegeln, startete Samuel Farwell
% in Portsmouth.
hinweis_1(Loesung) :-
member([Jahr_Bordeaux, _, _, bordeaux], Loesung),
member([Jahr_Gibraltar, _, gibraltar, _], Loesung),
Jahr_Bordeaux > Jahr_Gibraltar,
member([Jahr_Brighton, brighton, _, _], Loesung),
Jahr_Bordeaux =:= Jahr_Brighton - 1.
hinweis_2(Loesung) :-
member([_, _, algier, duenkirchen], Loesung).
hinweis_3(Loesung) :-
member([Jahr_Dover, dover, _, _], Loesung),
member([Jahr_Calais, _, _, calais], Loesung),
Jahr_Dover > Jahr_Calais,
\+(Jahr_Dover =:= Jahr_Calais + 3).
hinweis_4(Loesung) :-
member([1901, Start, _, _], Loesung),
Start \= worthing,
member([_, worthing, _, Ende], Loesung),
Ende \= plymouth.
hinweis_5(Loesung) :-
member([1903, _, _, torquay], Loesung).
hinweis_6(Loesung) :-
member([Jahr_Tanger, _, tanger, _], Loesung),
member([Jahr_Tunis, _, tunis, _], Loesung),
Jahr_Tanger < Jahr_Tunis,
member([Jahr_Madeira, _, madeira, _], Loesung),
Jahr_Tanger > Jahr_Madeira.
hinweis_7(Loesung) :-
member([1905, portsmouth, _, _], Loesung).
logical(Loesung) :-
Loesung = [[1901, S1, Z1, E1],
[1902, S2, Z2, E2],
[1903, S3, Z3, E3],
[1904, S4, Z4, E4],
[1905, S5, Z5, E5]],
permutation([S1, S2, S3, S4, S5], [brighton, dover, portsmouth, southend, worthing]),
permutation([Z1, Z2, Z3, Z4, Z5], [algier, gibraltar, madeira, tanger, tunis]),
permutation([E1, E2, E3, E4, E5], [bordeaux, calais, duenkirchen, plymouth, torquay]),
hinweis_1(Loesung),
hinweis_2(Loesung),
hinweis_3(Loesung),
hinweis_4(Loesung),
hinweis_5(Loesung),
hinweis_6(Loesung),
hinweis_7(Loesung).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment