package Ġcom . a oc . ma ze . don ut . recursive . portal Ċ Ċ import Ġcom . a oc . math . Point 3 D Ċ Ċ data Ġclass ĠW arp Code 3 D ( val Ġchar One : ĠChar , Ġval Ġpos One : ĠPoint 3 D , Ġval Ġchar Two : ĠChar , Ġval Ġpos Two : ĠPoint 3 D ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Positions () Ġ= Ġset Of ( pos One , Ġpos Two ) ĊĊĠĠĠ Ġfun Ġis Entr ance () Ġ= Ġchar One Ġ== Ġ' A ' Ġ&& Ġchar Two Ġ== Ġ' A ' ĊĊĠĠĠ Ġfun Ġis Exit () Ġ= Ġchar One Ġ== Ġ' Z ' Ġ&& Ġchar Two Ġ== Ġ' Z ' ĊĊĠĠĠ Ġfun Ġis Matching ( other : ĠW arp Code 3 D ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhas Same Code Ġ= Ġ( char One Ġ== Ġother . char One Ġ|| Ġchar One Ġ== Ġother . char Two ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( char Two Ġ== Ġother . char One Ġ|| Ġchar Two Ġ== Ġother . char Two ) ĊĠĠĠĠĠĠĠ Ġval Ġhas Different Position Ġ= Ġ( pos One Ġ!= Ġother . pos One Ġ&& Ġpos One Ġ!= Ġother . pos Two ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( pos Two Ġ!= Ġother . pos One Ġ&& Ġpos Two Ġ!= Ġother . pos Two ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhas Same Code Ġ&& Ġhas Different Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġchar One . toString () Ġ+ Ġchar Two . toString () Ċ Ċ }