ListやMapなどScalaの様々なデータ構造を利用してアルゴリズムを学習中
- 平均値を出す割り算の際に、Hの含まれる配列の数.length(or size)で割りたいが方法わからない
ロジックで解決できるのか、ライブラリで解決できるのか模索中ですが参考になる情報などいただけるとありがたいです。
Scala
1object Main extends App{ 2 // Here your code ! 3 val list = List( 4 (1,"H",0), 5 (2,"H",5), 6 (3,"H",4), 7 (4,"R",2), 8 (5,"R",7), 9 (6,"H",1), 10 (7,"H",8), 11 (8,"H",5), 12 (9,"R",2), 13 (10,"R",5) 14 ) 15 16 for((a,b,c) <- list){ 17 // 実現したいこと 18 // 0. aの値はインデックスの役割を果たす 19 // 1.bが"H"の間、cの値を足し算していく 20 // 2.bが"R"になったとき、足し算ストップ 21 // 3.それまで足したcの値の平均を出し、平均値をavgとする 22 // 4.足し算に関わった各配列が"H"の時のcの値が平均値avgより高い場合のみcを表示する 23 // 5.次に"R"が"H"に変わったときに1に戻り、処理を再開する 24 25 // 例. 26 // (1,"H",0), 27 // (2,"H",5), 28 // (3,"H",4), 29 // (4,"R",2), 30 // (5,"R",7) 31 32 // 上記の場合、cの値は(0+5+4)で9になる 33 // 平均は、9/3(足し算にかかわったHの含まれる配列の数の分)=3 34 // aが1から3までの間=bが"H"の間にcの値が平均の3より大きい場合にcを表示したい 35 // if (c > avg){ 36 // println(c) 37 // } 38 // ここで、平均値3より大きい5と4が表示されると成功 39 40 // また以下のようにRからHになった際には処理を再開したい 41 // (4,"R",2), 42 // (5,"R",7), 43 // (6,"H",1), 44 // (7,"H",8), 45 // (8,"H",5), 46 // (9,"R",2), 47 // (10,"R",5) 48 // ) 49 50 //最終的にはprintln(c)で5, 4, 8, 5が出力できると成功 51 } 52}
## 試したコード
途中までの処理としてはこのような雰囲気で書いていました
Scala
1object Main extends App{ 2 // Here your code ! 3 val list = List( 4 (1,"H",0), 5 (2,"H",5), 6 (3,"H",4), 7 (4,"R",2), 8 (5,"R",7), 9 (6,"H",1), 10 (7,"H",8), 11 (8,"H",5), 12 (9,"R",2), 13 (10,"R",5) 14 ) 15 var num = 0 16 17 for((a,b,c) <- list){ 18 19 if (b.contains("H")) { 20 num = num + c 21 } 22 if (b.contains("R")) { 23 // ここからわからない 24 println(num) 25 num = 0 26 } 27 28 } 29} 30 31//結果 32//9 33//0 34//14 35//0 36
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/23 00:23
2019/12/24 10:21
2019/12/25 02:58