/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ġxmm mm mo vo Ċ Ġ*/ Ċ Ċ package Ġalgorithms Ċ Ċ /** Ċ Ġ* ĠåĪĽå»º æĸ Ĳ æ³¢ éĤ£ å¥ ĳ æķ° åĪĹ Ċ Ġ* Ġ@ author Ġxmm mm mo vo Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 8 / 3 Ġ 1 : 0 1 Ċ Ġ* Ġ@ param Ġlength Ġ æķ° åĪĹ éķ¿åº¦ Ċ Ġ* Ġ@ return Ġ æķ° åĪĹ Ċ Ġ* Ġ@ since Ġversion - 1 . 0 Ċ Ġ*/ Ċ fun Ġmake Fib onacci List ( length : ĠInt ): ĠList < Int > Ġ= ĊĠĠĠ Ġwhen Ġ( length ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠlistOf ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfl Ġ= Ġmutable ListOf < Int >( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġlength Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfl . add ( fl [ i ] Ġ+ Ġfl [ i Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfl ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠåĪĽå»º æľĢå¤§ åĢ¼ å¤§äºİ [ length ] çļĦ ç¬¬ä¸Ģä¸ª æķ° Ċ Ġ* Ġ@ author Ġxmm mm mo vo Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 8 / 3 Ġ 1 : 0 1 Ċ Ġ* Ġ@ param Ġlength Ġ æľĢ éķ¿ åĢ¼ Ċ Ġ* Ġ@ return Ġ æķ° åĪĹ Ċ Ġ* Ġ@ since Ġversion - 1 . 0 Ċ Ġ*/ Ċ fun Ġmake Fib onacci List Until Length ( length : ĠInt ): ĠList < Int > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( length ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠlistOf ( 1 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠlistOf ( 1 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfl Ġ= Ġmutable ListOf ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnv Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( length Ġ> Ġnv Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfl . add ( nv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnv Ġ+= Ġfl [ fl . size Ġ- Ġ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfl . add ( nv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfl ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ æĸ Ĳ æ³¢ éĤ£ å¥ ĳ äºĮ åĪĨ æĲľç´¢ Ċ Ġ* Ġ@ author Ġxmm mm mo vo Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 7 / 3 1 Ġ 1 6 : 0 9 Ċ Ġ* Ġ@ param Ġlist Ġ åĪĹè¡¨ Ċ Ġ* Ġ@ param Ġkey ĠéľĢè¦ģ æŁ¥æī¾ çļĦåĢ¼ Ċ Ġ* Ġ@ param Ġ_ lo Ġ å·¦ èĮĥåĽ´ Ġé»ĺè®¤ ä¸º 0 Ċ Ġ* Ġ@ param Ġ_ hi Ġ åı³ èĮĥåĽ´ Ġé»ĺè®¤ ä¸º list . size Ġ- Ġ 1 Ċ Ġ* Ġ@ return ĠæŁ¥ æī¾åĪ° äºĨ å°± è¿ĶåĽŀ ä¸ĭ æłĩ ï¼Į æ²¡ æŁ¥ æī¾åĪ° å°± è¿ĶåĽŀ - 1 Ċ Ġ* Ġ@ since Ġversion - 1 . 0 Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠComparable < T >> Ġfib onacci Binary Search ( ĊĠĠĠ Ġlist : ĠList < T >, Ġkey : ĠT , Ġ_ lo : ĠInt Ġ= Ġ 0 , Ġ_ hi : ĠInt Ġ= Ġlist . size Ġ- Ġ 1 Ċ ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( list . isEmpty ()) Ġreturn Ġ- 1 ĊĊĠĠĠ Ġ// ĠæŃ¤ æĹ¶ æľĢ æľ« å°¾ çļĦåĢ¼ èĤ ¯ å®ļ æĺ¯ åĪļ å¥½ å¤§äºİ éķ¿åº¦ çļĦ éĤ£ ä¸ª ĊĠĠĠ Ġval Ġf bl Ġ= Ġmake Fib onacci List Until Length (_ hi Ġ- Ġ_ lo Ġ+ Ġ 1 ) ĊĠĠĠ Ġval Ġtl Ġ= Ġlist . to Mutable List () ĊĠĠĠ Ġtl . addAll ( List (( f bl . last () Ġ- Ġ 1 Ġ- Ġlist . size )) Ġ{ Ġlist . last () Ġ}) ĊĊĠĠĠ Ġvar Ġlo Ġ= Ġ_ lo ĊĠĠĠ Ġvar Ġhi Ġ= Ġif Ġ(_ hi Ġ== Ġlist . last Index ) Ġtl . last Index Ġelse Ġ_ hi ĊĠĠĠ Ġvar Ġk Ġ= Ġf bl . last Index ĊĊĠĠĠ Ġwhile Ġ( lo Ġ<= Ġhi ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġlo Ġ+ Ġf bl [ k Ġ- Ġ 1 ] Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtl [ mid ] Ġ> Ġkey Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhi Ġ= Ġmid Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå°ı åłĨ å°± - 2 ï¼Į åĽłä¸º å°ĳ äºĨ f ( n - 1 ) çļĦä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtl [ mid ] Ġ< Ġkey Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ-= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġif Ġ( mid Ġ>= Ġ_ hi ) Ġlist . last Index Ġelse Ġmid ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ- 1 Ċ }