2016-10-12 5 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プログラマとして、これは私にとって新しいものです。しかし、私はjavaでこのアプリケーションを作成する必要があります明日、多くの問題が来るのだろうか? javaには大きなコミュニティとチュートリアルがあるので、多くの人がscalaはjavaよりシンプルだと言いました。どう思いますか? –

関連する問題