アルゴリズムのスキルを向上させたいですか?スカラとアルゴリズムによるワークアウト
test("testMergeList") {
val a = List(1, 6, 7, 8, 40)
val b = List(1, 7, 8, 9, 11, 20, 100)
println(Workout.mergeList(a, b, List()))
println(Workout.mergeList(b, a, List()))
assert(Workout.mergeList(a, b, List()) equals List(1, 1, 6, 7, 7, 8, 8, 9, 11, 20, 40, 100))
assert(Workout.mergeList(b, a, List()) equals List(1, 1, 6, 7, 7, 8, 8, 9, 11, 20, 40, 100))
}
でした:たとえば、ここでは、この
次のルールにより2つのリストをマージする必要が* ListA = 1 2 4 6 100
* ListB = 5 200
* ListRes = 1 2 4 5 6 100 200
のようなタスクは、チェックのための実装
@tailrec
def mergeList(a: List[Int], b: List[Int], res: List[Int]): List[Int] = {
if (a.isEmpty) return res ::: b
if (b.isEmpty) return res ::: a
if (a.head < b.head) mergeList(a.tail, b, res ::: List(a.head)) else
mergeList(a, b.tail, res ::: List(b.head))
}
ユニットテストは ですこのようなタスクでいくつかのリソースをお勧めしますか?
私の実装を投稿してディスカッションすることはできますか?
ありがとうございました。
あなたのソリューションは実際には非常に悪いです。 'a ++ b sorted 'のようなものは最適ではありませんが、あなたのものよりはるかに優れています。 – Dima
あなたがそれを投稿して議論することができるところに関しては、codereviewをチェックしてください:http://codereview.stackexchange.com/ – Dima
これは適切なSOの質問のようには思われません。 –