package Ġnov oda Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . functions . Bi Function Ċ import Ġio . reactivex . functions . Function Ċ import Ġio . reactivex . schedul ers . Test Scheduler Ċ import Ġnov oda . types . Integer Operator Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠBasic Solutions Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠINTEGER S Ġ= ĠArrays . asList ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠ Ġ- ĠRepeat Ġ 3 Ġtimes Ġevery Ġeven Ġelement Ġand Ġemit Ġonce Ġevery Ġodd Ġelement ĊĠĠĠ Ġ- ĠSend Ġelements Ġuntil Ġyou Ġencounter Ġan Ġodd Ġelement Ġthen Ġfail , Ġrestart Ġand Ġmultiply Ġby Ġ 2 Ġthe Ġentire Ġsequence ĊĠĠĠ Ġ- ĠPre pend Ġthe Ġstring Ġ" Integer Ġ: Ġ" Ġin Ġfront Ġof Ġevery Ġelement ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġbasic Exercise (): ĠObservable < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . from Iterable ( INTEGER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ( three Times If Even ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ( fail IfNot Even ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Resume Next ( double Everything ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map < String >( format ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdouble Everything (): ĠFunction < Throwable , ĠObservable < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ ĠObservable . from Iterable ( INTEGER S ). map ( multiply By 2 ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfail IfNot Even (): ĠFunction < Int , ĠObservable < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ Ġinteger Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Even ( integer )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just < Int >( integer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . error < Int >( IllegalArgumentException ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġthree Times If Even (): ĠFunction < Int , ĠObservable < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ Ġinteger Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Even ( integer )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( integer ). repeat ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just < Int >( integer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmultiply By 2 (): ĠFunction < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ Ġinteger Ġ-> Ġinteger Ġ* Ġ 2 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat (): ĠFunction < Int , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ Ġinteger Ġ-> Ġ" Integer Ġ: Ġ" Ġ+ Ġinteger Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Even ( integer : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinteger Ġ% Ġ 2 Ġ== Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠS ENT ENCES Ġ= ĠArrays . asList (" This Ġis Ġthe Ġfirst Ġsentence ", Ġ" I Ġwant Ġthose Ġto Ġbe Ġenum erated ", Ġ" How Ġwould Ġyou Ġask ?", Ġ" That Ġis Ġyours Ġto Ġfind Ġout !") ĊĊĠĠĠ Ġprivate Ġval ĠIN FIN ITE _ ITER ABLE Ġ= Ġobject Ġ: ĠIterable < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger Operator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠ Ġ- ĠGet Ġthe Ġ 2 0 Ġfirst Ġintegers Ġfrom ĠIN FIN ITE _ ITER ABLE ĊĠĠĠ Ġ- ĠEnum erate Ġthe ĠS ENT ENCES Ġby Ġadding Ġtheir Ġindex Ġin Ġfront Ġof Ġit . ĊĠĠĠ Ġ- ĠConcat enate Ġthe Ġsequences Ġinto Ġone Ġline . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġinfinite Exercise (): ĠObservable < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . from Iterable ( INF IN ITE _ ITER ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip With ( Observable . from Iterable ( SENT ENCES ), ĠBi Function Ġ{ Ġt 1 : ĠInt , Ġt 2 : ĠString Ġ-> Ġ"" Ġ+ Ġt 1 Ġ+ Ġ":" Ġ+ Ġt 2 Ġ}, Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġt 1 : ĠString , Ġt 2 : ĠString Ġ-> Ġt 1 Ġ+ Ġ" Ġ" Ġ+ Ġt 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplement Ġa Ġtimer Ġthat Ġemits Ġan Ġitem Ġevery Ġsecond . ĠNumbers Ġto Ġbe Ġemitted : Ġ 1 Ġto Ġ 6 ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġtimer ( scheduler : ĠTest Scheduler ): ĠObservable < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . interval ( 1 , ĠTimeUnit . SECONDS , Ġscheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 0 ). map Ġ{ Ġit Ġ+ Ġ 1 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplement Ġcount () Ġoperator Ġ( counts Ġthe Ġamount Ġof Ġitems Ġin Ġan Ġobservable ) ĊĠĠĠĠ Ġ* ĠHint : ĠYou Ġcan Ġuse Ġreduce () Ġoperator ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġcount ( observable : ĠObservable < Char >): ĠSingle < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobservable . reduce ( 0 ) Ġ{ Ġsize So Far , Ġ_ Ġ-> Ġsize So Far Ġ+ Ġ 1 Ġ} ĊĠĠĠ Ġ} Ċ }