package Ġdata structures Ċ Ċ class ĠIndex Tra verser ( val Ġlength : ĠInt , Ġprivate Ġval Ġstill Ok ay Function : Ġ( Array < Int >) Ġ-> ĠBoolean ) Ġ{ Ċ ĉ val Ġindices Ġ= ĠArray ( length , Ġ{ Ġ 0 Ġ}) Ċ ĉ private Ġvar Ġdone Round s Ġ= Ġ 0 ĊĊ ĉ override Ġfun ĠtoString (): ĠString Ġ{ Ċĉ ĉ return Ġindices . toString () Ċ ĉ } ĊĊ ĉ fun Ġincrement () Ġ{ Ċĉ ĉ var Ġindex Ġ= Ġ 0 Ċĉ ĉ while Ġ( true ) Ġ{ Ċĉĉ ĉ if Ġ( index Ġ>= Ġlength ) Ġ{ Ċĉĉĉ ĉ done Round s ++ Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉĉ ĉ indices [ index ] ++ Ċĉĉ ĉ if Ġ( still Ok ay Function ( indices )) Ġ{ Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉĉ ĉ indices [ index ] Ġ= Ġ 0 Ċĉĉ ĉ index ++ Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun Ġdone (): ĠBoolean Ġ{ Ċĉ ĉ return Ġdone Round s Ġ> Ġ 0 Ċ ĉ } Ċ }