2016-10-12 3 views
0

val 중 임의의 것이 결과 목록에 오도록해야합니다. 여기 코드는 다음과 같습니다스칼라 : 발 순서의 임의 목록

def motivation(name:String, score:Int){ 
val quote1 = "You're not lost. You're locationally challenged." //score=10 
val quote2 = "Time is the most valuable thing a man can spend." //score=20 
val quote3 = "At times one remains faithful to a cause." //score=10 
val quote4 = "Only because its opponents do not cease to be insipid." //score=10 
val quote5 = "Life can be complicated." //score=20 

case Some(score) => val quoteRes = shufle(????) 
} 
  1. 계산에 그것을 할 수 있도록 내가 각 따옴표의 점수를 표시하려면 어떻게합니까.
  2. score을 기준으로 임의로 따옴표를 선택하고 shuffle도 주문합니까? 예를 들어

존 (이름) (40) (점수)가있는 경우 결과 수있을 quotes2 + quotes3 + quotes4 또는 quotes4 + quotes5 또는 quotes1 + quotes2 + quotes5 내가 시작할 가능성이있을 거라고 생각

+0

나는 쌍 (스코어, 따옴표)을 갖는 것이 더 좋을 것이라고 생각한다. 이 질문의 나머지 부분은 알고리즘입니다. – NaHeon

답변

0

모든 인용문과 각각의 점수와 함께.

val quotes = Map("quote this" -> 10 
       , "no quote" -> 20 
       , "quoteless" -> 10 
       ) 

그런 다음 가능한 한 여러 방법으로 결합하십시오.

// all possible quote combinations 
val qCombos = (1 to quotes.size).flatMap(quotes.keys.toList.combinations) 

Map을 각각의 점수 합계로 표시합니다.

// associate all quote combinations with their score total 
val scoreSum = qCombos.groupBy(_.map(quotes).sum) 

이제는 합산하면 주어진 금액을 합산 한 모든 견적을 조회하십시오. 당신이 이미 twicealready에 대해 질문 한 이후, 무작위 순서로 결과를 제시에 관해서는

// get all the quote combinations that have this score total 
scoreSum(20) 
//res0: IndexedSeq[List[String]] = Vector(List(no quote), List(quote this, quoteless)) 

하고받은 좋은 대답은, 그 문제가 될 않을거야 가정합니다.

+0

이것은 내 인생에서 가장 가치있는 것입니다, 형제! 고맙습니다. 당신은 무작위로 섞인 모든 일들로 모든 문제를 해결했습니다. PHP 프로그래머로서, 이것은 저에게 새로운 것입니다. 그러나 내일 많은 문제가 발생합니다. 자바로이 앱을 만들어야합니까? 자바는 커다란 커뮤니티와 튜토리얼을 가지고 있기 때문에 많은 사람들이 scala가 java보다 단순하다고 말했다. 어떻게 생각해? –