% KSP 19-1-6 Evoluce % nejprve nějaká ta vstupní data je_puvodni_druh(rulik1). je_puvodni_druh(bolehlav1). mutace(rulik1,rulik2). mutace(rulik1,rulik3). mutace(rulik2,rulik4). mutace(bolehlav1, bolehlav2). % prarost(PraX,X) uspěje, je-li PraX je evolučním předkem rostliny X prarost(X,X) :- je_puvodni_druh(X). prarost(PraX,X) :- mutace(StarsiX,X), prarost(PraX,StarsiX). % Necháme si najít prarostliny, tedy evoluční předky rostlin X a Y, % a pokud jsou stejní, jsou i rostliny X a Y % z jedné vyvojové větve stejny_druh(X,Y) :- prarost(Pra,X), prarost(Pra,Y). % Mužeme psát i takhle, ale je to škaredé a neprologovské: stejny_druh2(X,Y) :- prarost(PraX,X), prarost(PraY,Y), PraX = PraY. % FUJ! % Úplně jiné řešení, také pěkné stejny_druh3(X,X). stejny_druh3(X,Y) :- mutace(StarsiX,X), stejny_druh3(StarsiX,Y). stejny_druh3(X,Y) :- mutace(StarsiY,Y), stejny_druh3(X,StarsiY).