Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object TweetStorm {
- def main(args: Array[String]): Unit = {
- args match {
- case Array(text) if text.length < 140 => println(text)
- case Array(text) if text.length > 140 => stormfy(text).foreach(println)
- case Array() => println("There is no arguments")
- }
- }
- def stormfy(text: String): List[String] = {
- val orderPlaceHolderSize = 4
- val tweetMaxSize = 140 - orderPlaceHolderSize
- val result = parseTweets(text.split(" ").toList, List(), "", tweetMaxSize)
- addOrder(result)
- }
- def parseTweets(texts: List[String], tweetList: List[String], tweet: String, tweetMaxSize: Int): List[String] = {
- texts match {
- case word :: Nil => parseTweets(List(), tweetList :+ s"$tweet $word", "", tweetMaxSize)
- case word :: rest =>
- val tweetSize = tweet.length
- val wordSize = word.length
- if (tweetSize + wordSize > tweetMaxSize) {
- parseTweets(rest, tweetList :+ tweet, s" $word", tweetMaxSize)
- } else {
- parseTweets(rest, tweetList, s"$tweet $word", tweetMaxSize)
- }
- case Nil => tweetList
- }
- }
- def addOrder(tweets: List[String]): List[String] = {
- tweets.zipWithIndex.map {
- case (tweet, index) => s"${index + 1}/${tweets.length}$tweet"
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement