package Ġa oc 2 0 2 0 . util Ċ Ċ fun Ġload Text Resource ( path : ĠString ) Ġ= Ġobject Ġ{} . java Class . getResource ( path ). read Text (). trim () Ċ Ċ fun ĠList < String >. as Blocks (): ĠList < List < String >> Ġ{ ĊĠĠĠ Ġvar Ġrest Ġ= Ġthis ĊĠĠĠ Ġreturn Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( rest . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( rest . take While Ġ{ Ġit . isNotEmpty () Ġ}. toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest Ġ= Ġrest . drop While Ġ{ Ġit . isNotEmpty () Ġ}. drop ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. toList () Ċ } Ċ Ċ fun Ġ< T 1 , ĠT 2 > ĠSequence < T 1 >. product ( other : ĠSequence < T 2 >): ĠSequence < Pair < T 1 , ĠT 2 >> Ġ= ĊĠĠĠ Ġthis . flatMap Ġ{ Ġv Ġ-> Ġother . map Ġ{ ĠPair ( v , Ġit ) Ġ} Ġ} Ċ Ċ fun Ġ< T 1 , ĠT 2 > ĠIterable < T 1 >. product ( other : ĠIterable < T 2 >): ĠIterable < Pair < T 1 , ĠT 2 >> Ġ= ĊĠĠĠ Ġthis . flatMap Ġ{ Ġv Ġ-> Ġother . map Ġ{ ĠPair ( v , Ġit ) Ġ} Ġ} Ċ Ċ fun Ġ< T > ĠIterable < T >. pairs (): ĠIterable < Pair < T , ĠT >> Ġ= ĊĠĠĠ Ġthis . flatMap Indexed Ġ{ Ġidx , Ġv Ġ-> Ġthis . drop ( idx Ġ+ Ġ 1 ). map Ġ{ ĠPair ( v , Ġit ) Ġ} Ġ} Ċ