package Ġorg . ge ep aw h ill . g erry mand er Ċ Ċ enum Ġclass ĠDirection Ġ{ ĊĠĠĠ ĠNOR TH , ĊĠĠĠ ĠS OUT H , ĊĠĠĠ ĠE AST , ĊĠĠĠ ĠW EST , ĊĠĠĠ ĠN ORT HE AST , ĊĠĠĠ ĠS OUT HE AST , ĊĠĠĠ ĠNOR TH WEST , ĊĠĠĠ ĠS OUT HW EST ; ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġor th og on als Ġ= Ġset Of ( NORTH , ĠS OUT H , ĠE AST , ĠW EST ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠDirection . op pos ite (): ĠDirection Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ ĠDirection . NORTH Ġ-> ĠDirection . SO UTH ĊĠĠĠ ĠDirection . SO UTH Ġ-> ĠDirection . NORTH ĊĠĠĠ ĠDirection . EAST Ġ-> ĠDirection . WEST ĊĠĠĠ ĠDirection . WEST Ġ-> ĠDirection . EAST ĊĠĠĠ ĠDirection . N ORT HE AST Ġ-> ĠDirection . SO UTH WEST ĊĠĠĠ ĠDirection . NORTH WEST Ġ-> ĠDirection . SO UT HE AST ĊĠĠĠ ĠDirection . SO UTH WEST Ġ-> ĠDirection . N ORT HE AST ĊĠĠĠ ĠDirection . SO UT HE AST Ġ-> ĠDirection . NORTH WEST Ċ } Ċ Ċ fun ĠDirection . neighbors (): ĠPair < Direction , ĠDirection > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ ĠDirection . SO UTH , ĠDirection . NORTH Ġ-> ĠPair ( Direction . EAST , ĠDirection . WEST ) ĊĠĠĠ ĠDirection . EAST , ĠDirection . WEST Ġ-> ĠPair ( Direction . SO UTH , ĠDirection . NORTH ) ĊĠĠĠ ĠDirection . N ORT HE AST , ĠDirection . SO UTH WEST Ġ-> ĠPair ( Direction . NORTH WEST , ĠDirection . SO UT HE AST ) ĊĠĠĠ ĠDirection . NORTH WEST , ĠDirection . SO UT HE AST Ġ-> ĠPair ( Direction . SO UTH WEST , ĠDirection . N ORT HE AST ) Ċ } ĊĊ