/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 ĠK Math Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġspace . k science . k math . linear Ċ Ċ import Ġspace . k science . k math . nd . ND Structure Ċ Ċ /** Ċ Ġ* ĠThe Ġmatrix Ġwhere Ġeach Ġelement Ġis Ġevaluated Ġeach Ġtime Ġwhen Ġis Ġbeing Ġaccessed . Ċ Ġ* Ċ Ġ* Ġ@ property Ġgenerator Ġthe Ġfunction Ġthat Ġprovides Ġelements . Ċ Ġ*/ Ċ public Ġclass ĠVirtual Matrix < T Ġ: ĠAny >( ĊĠĠĠ Ġoverride Ġval Ġrow Num : ĠInt , ĊĠĠĠ Ġoverride Ġval Ġcol Num : ĠInt , ĊĠĠĠ Ġpublic Ġval Ġgenerator : Ġ( i : ĠInt , Ġj : ĠInt ) Ġ-> ĠT , Ċ ) Ġ: ĠMatrix < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġshape : ĠInt Array Ġget () Ġ= Ġint ArrayOf ( row Num , Ġcol Num ) ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( i : ĠInt , Ġj : ĠInt ): ĠT Ġ= Ġgenerator ( i , Ġj ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠND Structure <* >) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn ĠND Structure . content Equals ( this , Ġother ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġrow Num ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġcol Num ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġgenerator . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ