1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. whasabi

Beiträge von whasabi

  • Prolog - flights

    • whasabi
    • 10. Januar 2014 um 22:10

    Hallo :) Ich hab mal wieder eine Frage :confused:
    Also ich habe diesen Code bekommen [ganzer Code unten] und muss nun am Dienstag von London wegfliegen und am Freitag wieder in London landen und dazwischen muss ich durch Mialno, Ljubljana und Zürich fliegen. Und jeden Tag kann man nur einmal fliegen

    Ich habe es nun mit

    Code
    travel0(london,london,tue,fri,[zurich,milano,ljubljana]).


    aber es kommt immer nur false
    was mach ich falsch? denn

    Code
    travel0(City1,City2,Day,Arrival1,[City1-City3:Flight1:Departure1|Residual]):-[INDENT]flight(City1,City3,Day,Flight1,Departure1,Arrival3),[/INDENT]
    [INDENT]possibleTransfer(Arrival1,Departure1),[/INDENT]
    [INDENT]travel0(City3,City2,Day,Arrival3,Residual).
    [/INDENT]


    City1 = London
    City 2= London
    Day = Tue
    Arrival = Fri
    City1-City3 = [Milano, Zürich, Ljubiljana]

    oder hab ich da jz iwas falsch verstanden?? verzweifel schon langsam :confused:


    Code
    % flights.pl:
    :-op(50,xfy,:).
    timeTable(edinburgh,london,[INDENT][9:40/10:50/ba4733/daily,[/INDENT]
    [INDENT]13:40/14:50/ba4753/daily,
    19:40/20:50/ba4833/[mon,tue,wed,thu,fri,sun]]).
    [/INDENT]
    timeTable(london,edinburgh,[INDENT][9:40/10:50/ba4732/daily,
    11:40/12:50/ba4752/daily,
    18:40/19:50/ba4822/[mon,tue,wed,thu,fri]]).
    [/INDENT]
    timeTable(london,ljubljana,[INDENT][13:20/16:20/sa201/[fri],
    13:20/16:20/sa213/[sun]]).
    [/INDENT]
    timeTable(ljubljana,london,[INDENT][11:10/12:20/sa200/[fri],
    11:25/12:20/sa212/[sun]]).
    [/INDENT]
    timeTable(london,zurich,[INDENT][9:10/11:45/ba510/daily,
    14:45/17:20/sr459/daily]).
    [/INDENT]
    timeTable(zurich,london,[INDENT][9:00/9:40/ba613/[mon,tue,wed,thu,fri,sat],
    16:10/16:55/sr806/[mon,tue,wed,thu,fri,sun]]).
    [/INDENT]
    timeTable(london,milano,[INDENT][8:30/11:20/ba510/daily,
    11:00/13:50/az459/daily]).
    [/INDENT]
    timeTable(milano,london,[INDENT][9:10/10:00/az458/daily,
    12:20/13:10/ba511/daily]).
    [/INDENT]
    timeTable(ljubljana,zurich,[INDENT][11:30/12:40/sa322/[tue,thu]]).
    [/INDENT]
    timeTable(zurich,ljubljana,[INDENT][13:30/14:40/sa323/[tue,thu]]).
    [/INDENT]
    timeTable(zurich,milano,[INDENT][7:55/8:45/sr620/daily]).
    [/INDENT]
    timeTable(milano,zurich,[INDENT][9:25/10:15/sr621/daily,[/INDENT]
    [INDENT]12:45/13:35/sr623/daily]).
    [/INDENT]
     
    flight(City1,City2,Day,Flight,Departure,Arrival):-[INDENT]timeTable(City1,City2,TimeTable),[/INDENT]
    [INDENT]member(Departure/Arrival/Flight/DayTimeTable,TimeTable),[/INDENT]
    [INDENT]dayOfFlight(Day,DayTimeTable).
    [/INDENT]
     
    dayOfFlight(Day,daily):-[INDENT]member(Day,[mon,tue,wed,thu,fri,sat,sun]).[/INDENT]
    dayOfFlight(Day,List):-[INDENT]member(Day,List).
    [/INDENT]
     
    travel(City1,City2,Day,Letovi):-[INDENT]travel0(City1,City2,Day,0:0,Letovi).
    [/INDENT]
     
    % Arrival1 contains the time of arrival in City1;
    % it limits the no. of flights with which one can continue travelling
    travel0(City1,City2,Day,Arrival1,[City1-City2:Flight:Departure1]):-[INDENT]flight(City1,City2,Day,Flight,Departure1,_),[/INDENT]
    [INDENT]possibleTransfer(Arrival1,Departure1).
    [/INDENT]
     
    travel0(City1,City2,Day,Arrival1,[City1-City3:Flight1:Departure1|Residual]):-[INDENT]flight(City1,City3,Day,Flight1,Departure1,Arrival3),[/INDENT]
    [INDENT]possibleTransfer(Arrival1,Departure1),[/INDENT]
    [INDENT]travel0(City3,City2,Day,Arrival3,Residual).
    [/INDENT]
     
    timeOfDeparture([_-_:_:Departure|_],Departure).
     
    possibleTransfer(Hour1:Minute1,Hour2:Minute2):-[INDENT]60*(Hour2-Hour1)+Minute2-Minute1>=40.
    [/INDENT]
     
    member(X,[X|_]).member(X,[_|Rest]):-[INDENT]member(X,Rest).
    [/INDENT]
    Alles anzeigen
  • Prolog - Queens Problem

    • whasabi
    • 5. Januar 2014 um 09:56

    Hallo :)

    Ich hab eine Prolog Datei bekommen, welche mir das 8 queens Problem lösen soll und nun sollen wir eine Fuktion schreiben, welche dann das Problem mit N queens lösen soll...
    nur hänge ich leider schon bei dem Programm welches wir bekommen haben

    könnt ihr mir vl sagen wie das funktioniert bzw wie ich mir da z.B. eine Lösung ausgeben kann (also vl ein Beispiel schreiben was ich in SWI Prolog eingeben kann und dann kommt eine Lösung?)
    Weil wenn ich das Programm schon nicht verstehe wie soll ich dann die N-Lösung noch machen? :frowning_face:

    PHP
    % 8queens.pl: 
    % Program for solving the 8 queens problem 
    % List is an output argument in which the solution of the problem is written. 
    % Order of queens is represented with a list of coordinates of rows and columns. 
    solution(Order):- 
    Order=[_/0,_/1,_/2,_/3,_/4,_/5,_/6,_/7], 
    Rows=[0,1,2,3,4,5,6,7], 
    Diag_Asc=[-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7], 
    Diag_Des=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14], 
    solve(Order, Rows, Diag_Asc, Diag_Des). 
    % Arguments of predicate solve are in order: 
    % -solution of a problem (permitted order of queens); 
    % before execution of the procedure coordinates of columns need to be instantiated. 
    % -row of a queen that is currently being processed; 
    % -list of free descending diagonals which are described by the difference 
    % between row and column for every belonging field; 
    % -list of free ascending diagonals which are described by the sum 
    % between row and column for every belonging field; 
    solve([],_,_,_). 
    solve([Row/Column|Tail], R, Da, Dd):- 
    remove(Row,R,R1), % removes Row in R, rezult is R1 
    U is -Row+Column, 
    remove(U, Da, Da1), 
    S is Row+Column, 
    remove(S, Dd, Dd1), 
    solve(Tail, R1, Da1, Dd1). 
    remove(Element, [Element|Tail], Tail). 
    remove(Element, [Element1|Tail], [Element1|Tail1]):- 
    remove(Element,Tail,Tail1).
    Alles anzeigen

Rechtliches

Impressum

Datenschutzerklärung