package Ġpl . ipe bk . solver Ċ Ċ /** Ċ Ġ* ĠCreates Ġcard Ġwith Ġgiven Ġfeature Ġvariants . ĠFeature Ġids Ġare Ġincrement ing Ġand Ġstarts Ġwith Ġ 0 Ċ Ġ* ĠIf Ġyou Ġlike Ġto Ġadd Ġcustom Ġfeatures . ĠPlease Ġuse Ġdefault Ġ[ Card ] Ġconstructor . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfeature Variants Ġlist Ġof Ġvariants Ġfor Ġdefault Ġfeatures Ċ Ġ*/ Ċ class ĠCard ( var arg Ġfeature Variants : ĠInt ) Ġ{ ĊĠ Ġval Ġfeatures Ġ= ĠArrayList < Feature >() ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġvar Ġfeature Id Ġ= Ġ 0 ĊĠĠĠ Ġfeature Variants . forEach Ġ{ ĊĠĠĠĠĠ Ġfeatures . add ( Feature ( feature Id , Ġit )) ĊĠĠĠĠĠ Ġfeature Id ++ ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠ Ġother Ġas ĠCard ĊĊĠĠĠ Ġval Ġcommon Ġ= Ġfeatures . intersect ( this . features ) ĊĠĠĠ Ġreturn Ġcommon . size Ġ== Ġthis . features . size ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġfeatures . hashCode () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" Card ( features =$ features )" ĊĠ Ġ} Ċ }