package Ġcom . l ug g soft . common . utils Ċ Ċ import Ġorg . intellij . lang . annotations . Language Ċ Ċ fun Ġoptional ( condition : ĠBoolean , Ġblock : Ġ() Ġ-> ĠString ): ĠString Ċ { ĊĠĠĠ Ġreturn Ġwhen Ġ( condition ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġblock () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġgenerate Partial Function ( c : ĠInt , Ġi : ĠInt ): ĠString Ċ { ĊĠĠĠ Ġval Ġf R Ġ= Ġ( 1 .. c ) ĊĠĠĠ Ġval Ġi R Ġ= Ġ( 1 .. i ) ĊĠĠĠ Ġval Ġr R Ġ= Ġ(( i Ġ+ Ġ 1 ) .. c ) ĊĊĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠ Ġfun Ġgenerate (): ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġfun Ġ< ${ f R . join ToString Ġ{ Ġn Ġ-> Ġ" T Param $ n " Ġ}}, ĠTResult > Ġ( (${ f R . join ToString Ġ{ Ġn Ġ-> Ġ" T Param $ n " Ġ}}) Ġ-> ĠTResult ). partial (${ i R . join ToString Ġ{ Ġn Ġ-> Ġ" param $ n : ĠT Param $ n " Ġ}} ): Ġ(${ r R . join ToString Ġ{ Ġn Ġ-> Ġ" T Param $ n " Ġ}}) Ġ-> ĠTResult Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġ${ r R . join ToString Ġ{ Ġn Ġ-> Ġ" param $ n : ĠT Param $ n " Ġ}} ${ optional ( i Ġ< Ġc ) Ġ{ Ġ" Ġ-> Ġ" Ġ}} this . invoke (${ f R . join ToString Ġ{ Ġn Ġ-> Ġ" param $ n " Ġ} })} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ""" ĊĊĠĠĠ Ġreturn Ġgenerate (). trim Indent () Ċ } Ċ Ċ fun Ġgenerate () Ċ { ĊĠĠĠ Ġ( 1 .. 6 ). forEach Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠ Ġ( 1 .. c ). forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Ġ= Ġgenerate Partial Function ( c , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( function ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ċ { ĊĠĠĠ Ġgenerate () Ċ } Ċ Ċ /// Ċ Ċ infix Ġfun Ġ< TO per and 1 Ġ: ĠComparable < TO per and 2 >, ĠTO per and 2 > ĠTO per and 1 . as EqualTo ( operand 2 : ĠTO per and 2 ): Ġ( TO per and 2 ) Ġ-> ĠBoolean Ċ { ĊĠĠĠ Ġreturn Ġ{ Ġthis Ġ== Ġoperand 2 Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< TO per and 1 Ġ: ĠComparable < TO per and 2 >, ĠTO per and 2 > ĠTO per and 1 . as LessThan ( operand 2 : ĠTO per and 2 ): Ġ( TO per and 2 ) Ġ-> ĠBoolean Ċ { ĊĠĠĠ Ġreturn Ġ{ Ġthis Ġ< Ġoperand 2 Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< TO per and 1 Ġ: ĠComparable < TO per and 2 >, ĠTO per and 2 > ĠTO per and 1 . as GreaterThan ( operand 2 : ĠTO per and 2 ): Ġ( TO per and 2 ) Ġ-> ĠBoolean Ċ { ĊĠĠĠ Ġreturn Ġ{ Ġthis Ġ> Ġoperand 2 Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< TO per and 1 Ġ: ĠComparable < TO per and 2 >, ĠTO per and 2 > ĠTO per and 1 . as LessThan EqualTo ( operand 2 : ĠTO per and 2 ): Ġ( TO per and 2 ) Ġ-> ĠBoolean Ċ { ĊĠĠĠ Ġreturn Ġ{ Ġthis Ġ<= Ġoperand 2 Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< TO per and 1 Ġ: ĠComparable < TO per and 2 >, ĠTO per and 2 > ĠTO per and 1 . as GreaterThan EqualTo ( operand 2 : ĠTO per and 2 ): Ġ( TO per and 2 ) Ġ-> ĠBoolean Ċ { ĊĠĠĠ Ġreturn Ġ{ Ġthis Ġ>= Ġoperand 2 Ġ} Ċ } Ċ Ċ /// ĊĊ