
hory('Zelezna Ruda').
hory('Rocky Mountains').
hory('Kietzbiel').
hory('Strbske Pleso').
hory('Harachov').
pamatky('Praha').
pamatky('Rim').
plaz('Long Beach').
spojeni('Plzen', 'Zelezna Ruda').
spojeni('Plzen', 'Praha').
spojeni('Frankfurt', 'Praha').
spojeni('Frankfurt', 'Long Beach').
spojeni('Frankfurt', 'Rim').
spojeni('Praha', 'Harachov').
spojeni('Long Beach', 'Detroit').
spojeni('Detroit', 'Rocky Mountains').
spojeni('Praha', 'Bratislava').
spojeni('Strbske Pleso', 'Bratislava').
spojeni('Praha', 'Zurych').
spojeni('Kietzbiel Sever', 'Zurych').
teplota('Rim', 25).
teplota('Long Beach', 28).
teplota('Zelezna Ruda', 12).
ubytovani('Javor', 'Zelezna Ruda').
ubytovani('Javorina', 'Strbske Pleso').
ubytovani('Atrium', 'Praha').
ubytovani('Ceasar', 'Rim').
ubytovani('Exculibur', 'Long Beach').
m_seed_dovolena_bbff('lyzovani', 'Plzen').
m_dovolena_bbff(A, B):-m_seed_dovolena_bbff(A, B).
m_vyhovujici_bf(Zajem):-m_dovolena_bbff(Zajem, Bydliste).
label_doprava_0(Bydliste):-m_dovolena_bbff(Zajem, Bydliste).
label_doprava_1(RekreacniStredisko):-m_vyhovujici_bf(Zajem), vyhovujici_bf(Zajem, RekreacniStredisko).
m_doprava_bb(Bydliste, RekreacniStredisko):-label_doprava_0(Bydliste), label_doprava_1(RekreacniStredisko).
m_spoj_bb(PocatecniMisto, CiloveMisto):-m_doprava_bb(PocatecniMisto, CiloveMisto).
m_spoj_bf(PocatecniMisto):-m_doprava_bb(PocatecniMisto, CiloveMisto).
label_doprava_0(CiloveMisto):-m_doprava_bb(PocatecniMisto, CiloveMisto).
label_doprava_1(PrestupniMisto):-m_spoj_bf(PocatecniMisto), spoj_bf(PocatecniMisto, PrestupniMisto).
m_doprava_bb(PrestupniMisto, CiloveMisto):-label_doprava_0(CiloveMisto), label_doprava_1(PrestupniMisto).
dovolena_bbff(Zajem, Bydliste, RekreacniStredisko, Hotel):-m_dovolena_bbff(Zajem, Bydliste), m_vyhovujici_bf(Zajem), vyhovujici_bf(Zajem, RekreacniStredisko), m_doprava_bb(Bydliste, RekreacniStredisko), doprava_bb(Bydliste, RekreacniStredisko), ubytovani(Hotel, RekreacniStredisko).
vyhovujici_bf('lyzovani', RekreacniStredisko):-m_vyhovujici_bf('lyzovani'), hory(RekreacniStredisko).
vyhovujici_bf('prohlizeni pamatek', RekreacniStredisko):-m_vyhovujici_bf('prohlizeni pamatek'), pamatky(RekreacniStredisko).
vyhovujici_bf('koupani', RekreacniStredisko):-m_vyhovujici_bf('koupani'), plaz(RekreacniStredisko), teple_podnebi(RekreacniStredisko).
doprava_bb(PocatecniMisto, CiloveMisto):-m_doprava_bb(PocatecniMisto, CiloveMisto), m_spoj_bb(PocatecniMisto, CiloveMisto), spoj_bb(PocatecniMisto, CiloveMisto).
doprava_bb(PocatecniMisto, CiloveMisto):-m_doprava_bb(PocatecniMisto, CiloveMisto), m_spoj_bf(PocatecniMisto), spoj_bf(PocatecniMisto, PrestupniMisto), m_doprava_bb(PrestupniMisto, CiloveMisto), doprava_bb(PrestupniMisto, CiloveMisto).
spoj_bb(A, B):-m_spoj_bb(A, B), spojeni(A, B).
spoj_bf(A, B):-m_spoj_bf(A), spojeni(A, B).
spoj_bb(A, B):-m_spoj_bb(A, B), spojeni(B, A).
spoj_bf(A, B):-m_spoj_bf(A), spojeni(B, A).
teple_podnebi(Misto):-teplota(Misto, Teplota), Teplota>24.
?-dovolena_bbff('lyzovani', 'Plzen', X, Y).