Route finding algorithm written in prolog.
Find all routes between station A and station B and sort them by shortest time.
Case study
Berlin Subway (Ubahn)
Mapped lines: U1 -> U9
Use
Install swi prolog
brew install swi-prolog
or see here
Launch the REPL in the project folder with swipl
In the REPL
- load the program with
[rails].
or['rails.pl'].
- use predicate
route/2
;
next result,.
stop- exit the repl with
halt.
?- [rails].
true.
?- route(alexanderplatz, 'kottbusser tor').
alexanderplatz u8 -> kottbusser tor ❯ hermannstrasse (4)
6.9 minutes / 3.0 km
true ;
alexanderplatz u2 -> stadtmitte ❯ ruhleben (5)
stadtmitte u6 -> hallesches tor ❯ alt-mariendorf (2)
hallesches tor u1 -> kottbusser tor ❯ warschauer strasse (2)
21.3 minutes / 5.9 km
true ;
alexanderplatz u2 -> gleisdreieck ❯ ruhleben (9)
gleisdreieck u1 -> kottbusser tor ❯ warschauer strasse (4)
22.4 minutes / 7.8 km
true .