object ĠBe er Song Ġ{ ĊĠĠĠ Ġfun Ġver ses ( start Bot tles : ĠInt , Ġtake Down : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( start Bot tles Ġdown To Ġtake Down ). flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( first Ver se ( it ), Ġsecond Ver se ( it . one Less ()) Ġ+ Ġ"\ n ") ĊĠĠĠĠĠĠĠ Ġ}. join ToString ( separator Ġ= Ġ"\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInt . one Less () Ġ= Ġif Ġ( this Ġ== Ġ 0 ) Ġ 9 9 Ġelse Ġthis Ġ- Ġ 1 ĊĊĠĠĠ Ġfun Ġfirst Ver se ( n : ĠInt ) Ġ= Ġwhen Ġ( n ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" No Ġmore Ġbot tles Ġof Ġbeer Ġon Ġthe Ġwall , Ġno Ġmore Ġbot tles Ġof Ġbeer ." ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"${ beer On The Wall ( n )}, Ġ${ bot tles Of Be er ( n )} ." ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsecond Ver se ( n : ĠInt ) Ġ= Ġwhen Ġ( n ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" Take Ġit Ġdown Ġand Ġpass Ġit Ġaround , Ġno Ġmore Ġbot tles Ġof Ġbeer Ġon Ġthe Ġwall ." ĊĠĠĠĠĠĠĠĠ 9 9 Ġ-> Ġ" Go Ġto Ġthe Ġstore Ġand Ġbuy Ġsome Ġmore , Ġ${ beer On The Wall ( n )} ." ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Take Ġone Ġdown Ġand Ġpass Ġit Ġaround , Ġ${ beer On The Wall ( n )} ." ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbeer On The Wall ( n : ĠInt ) Ġ= Ġ"${ bot tles Of Be er ( n )} Ġon Ġthe Ġwall " ĊĊĠĠĠ Ġfun Ġbot tles Of Be er ( n : ĠInt ) Ġ= Ġ"$ n Ġ${ bot tle ( n )} Ġof Ġbeer " ĊĊĠĠĠ Ġfun Ġbottle ( n : ĠInt ) Ġ= Ġwhen Ġ( n ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" bot tle " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" bot tles " ĊĠĠĠ Ġ} Ċ } Ċ