FerryMansProblem

left: wolf goat cabbage 
boat at: left cargo: 
right: 


Shortest path: 

ReachableState: number: 1 metricValue: 12.0
left: wolf cabbage goat 
boat at: left cargo: 
right: 

1 --load cargo Cargo: goat-> 2

ReachableState: number: 2 metricValue: 11.0
left: wolf cabbage 
boat at: left cargo: goat
right: 

2 --move boat-> 3

ReachableState: number: 3 metricValue: 10.0
left: wolf cabbage 
boat at: right cargo: 
right: goat 

3 --move boat-> 5

ReachableState: number: 5 metricValue: 9.0
left: wolf cabbage 
boat at: left cargo: 
right: goat 

5 --load cargo Cargo: wolf-> 6

ReachableState: number: 6 metricValue: 8.0
left: cabbage 
boat at: left cargo: wolf
right: goat 

6 --move boat-> 8

ReachableState: number: 8 metricValue: 7.0
left: cabbage 
boat at: right cargo: 
right: goat wolf 

8 --load cargo Cargo: goat-> 10

ReachableState: number: 10 metricValue: 6.0
left: cabbage 
boat at: right cargo: goat
right: wolf 

10 --move boat-> 14

ReachableState: number: 14 metricValue: 5.0
left: cabbage goat 
boat at: left cargo: 
right: wolf 

14 --load cargo Cargo: cabbage-> 16

ReachableState: number: 16 metricValue: 4.0
left: goat 
boat at: left cargo: cabbage
right: wolf 

16 --move boat-> 20

ReachableState: number: 20 metricValue: 3.0
left: goat 
boat at: right cargo: 
right: wolf cabbage 

20 --move boat-> 23

ReachableState: number: 23 metricValue: 2.0
left: goat 
boat at: left cargo: 
right: wolf cabbage 

23 --load cargo Cargo: goat-> 24

ReachableState: number: 24 metricValue: 1.0
left: 
boat at: left cargo: goat
right: wolf cabbage 

24 --move boat-> 25

ReachableState: number: 25 metricValue: 0.0
left: 
boat at: right cargo: 
right: wolf cabbage goat 


Full reachability graph: 


4 --move boat-> 1
ReachableState: number: 1 metricValue: 12.0
left: wolf cabbage goat 
boat at: left cargo: 
right: 
1 --load cargo Cargo: goat-> 2


1 --load cargo Cargo: goat-> 2
ReachableState: number: 2 metricValue: 11.0
left: wolf cabbage 
boat at: left cargo: goat
right: 
2 --move boat-> 3


2 --move boat-> 3
5 --move boat-> 3
ReachableState: number: 3 metricValue: 10.0
left: wolf cabbage 
boat at: right cargo: 
right: goat 
3 --load cargo Cargo: goat-> 4
3 --move boat-> 5


3 --load cargo Cargo: goat-> 4
ReachableState: number: 4 metricValue: 13.0
left: wolf cabbage 
boat at: right cargo: goat
right: 
4 --move boat-> 1


3 --move boat-> 5
11 --move boat-> 5
13 --move boat-> 5
ReachableState: number: 5 metricValue: 9.0
left: wolf cabbage 
boat at: left cargo: 
right: goat 
5 --load cargo Cargo: wolf-> 6
5 --load cargo Cargo: cabbage-> 7
5 --move boat-> 3


5 --load cargo Cargo: wolf-> 6
ReachableState: number: 6 metricValue: 8.0
left: cabbage 
boat at: left cargo: wolf
right: goat 
6 --move boat-> 8


5 --load cargo Cargo: cabbage-> 7
ReachableState: number: 7 metricValue: 8.0
left: wolf 
boat at: left cargo: cabbage
right: goat 
7 --move boat-> 9


6 --move boat-> 8
17 --move boat-> 8
ReachableState: number: 8 metricValue: 7.0
left: cabbage 
boat at: right cargo: 
right: goat wolf 
8 --load cargo Cargo: goat-> 10
8 --load cargo Cargo: wolf-> 11


7 --move boat-> 9
19 --move boat-> 9
ReachableState: number: 9 metricValue: 7.0
left: wolf 
boat at: right cargo: 
right: goat cabbage 
9 --load cargo Cargo: goat-> 12
9 --load cargo Cargo: cabbage-> 13


8 --load cargo Cargo: goat-> 10
ReachableState: number: 10 metricValue: 6.0
left: cabbage 
boat at: right cargo: goat
right: wolf 
10 --move boat-> 14


8 --load cargo Cargo: wolf-> 11
ReachableState: number: 11 metricValue: 10.0
left: cabbage 
boat at: right cargo: wolf
right: goat 
11 --move boat-> 5


9 --load cargo Cargo: goat-> 12
ReachableState: number: 12 metricValue: 6.0
left: wolf 
boat at: right cargo: goat
right: cabbage 
12 --move boat-> 15


9 --load cargo Cargo: cabbage-> 13
ReachableState: number: 13 metricValue: 10.0
left: wolf 
boat at: right cargo: cabbage
right: goat 
13 --move boat-> 5


10 --move boat-> 14
22 --move boat-> 14
ReachableState: number: 14 metricValue: 5.0
left: cabbage goat 
boat at: left cargo: 
right: wolf 
14 --load cargo Cargo: cabbage-> 16
14 --load cargo Cargo: goat-> 17


12 --move boat-> 15
21 --move boat-> 15
ReachableState: number: 15 metricValue: 5.0
left: wolf goat 
boat at: left cargo: 
right: cabbage 
15 --load cargo Cargo: wolf-> 18
15 --load cargo Cargo: goat-> 19


14 --load cargo Cargo: cabbage-> 16
ReachableState: number: 16 metricValue: 4.0
left: goat 
boat at: left cargo: cabbage
right: wolf 
16 --move boat-> 20


14 --load cargo Cargo: goat-> 17
ReachableState: number: 17 metricValue: 8.0
left: cabbage 
boat at: left cargo: goat
right: wolf 
17 --move boat-> 8


15 --load cargo Cargo: wolf-> 18
ReachableState: number: 18 metricValue: 4.0
left: goat 
boat at: left cargo: wolf
right: cabbage 
18 --move boat-> 20


15 --load cargo Cargo: goat-> 19
ReachableState: number: 19 metricValue: 8.0
left: wolf 
boat at: left cargo: goat
right: cabbage 
19 --move boat-> 9


16 --move boat-> 20
18 --move boat-> 20
23 --move boat-> 20
ReachableState: number: 20 metricValue: 3.0
left: goat 
boat at: right cargo: 
right: wolf cabbage 
20 --load cargo Cargo: wolf-> 21
20 --load cargo Cargo: cabbage-> 22
20 --move boat-> 23


20 --load cargo Cargo: wolf-> 21
ReachableState: number: 21 metricValue: 6.0
left: goat 
boat at: right cargo: wolf
right: cabbage 
21 --move boat-> 15


20 --load cargo Cargo: cabbage-> 22
ReachableState: number: 22 metricValue: 6.0
left: goat 
boat at: right cargo: cabbage
right: wolf 
22 --move boat-> 14


20 --move boat-> 23
26 --move boat-> 23
ReachableState: number: 23 metricValue: 2.0
left: goat 
boat at: left cargo: 
right: wolf cabbage 
23 --load cargo Cargo: goat-> 24
23 --move boat-> 20


23 --load cargo Cargo: goat-> 24
ReachableState: number: 24 metricValue: 1.0
left: 
boat at: left cargo: goat
right: wolf cabbage 
24 --move boat-> 25


24 --move boat-> 25
ReachableState: number: 25 metricValue: 0.0
left: 
boat at: right cargo: 
right: wolf cabbage goat 
25 --load cargo Cargo: goat-> 26


25 --load cargo Cargo: goat-> 26
ReachableState: number: 26 metricValue: 3.0
left: 
boat at: right cargo: goat
right: wolf cabbage 
26 --move boat-> 23


xtend: 
ReachableState: number: 25 metricValue: 0.0
left: 
boat at: right cargo: 
right: wolf cabbage goat 


java streams: 
Optional[ReachableState: number: 25 metricValue: 0.0
left: 
boat at: right cargo: 
right: wolf cabbage goat 
]

final step

ReachabilityGraph