2016-04-27 8 views
2

Wollen Sie meine algorithmischen Fähigkeiten verbessern. Zum Beispiel Aufgabe wie dieseWorkout mit Scala und Algorithmen

Need 2 Listen von der nächsten Regel fusionieren

* ListA = 1 2 4 6 100 
* ListB = 5 200 
* ListRes = 1 2 4 5 6 100 200 

Hier ist die Umsetzung

@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)) 
    } 

Unit-Test zur Überprüfung:

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)) 
    } 

Could empfehlen Sie bitte einige Ressourcen mit solchen Aufgaben?

Wo kann ich meine Implementierung posten und diskutieren?

Danke.

+0

Ihre Lösung ist eigentlich sehr schlecht. Etwas wie 'a ++ b sorted' ist auch nicht optimal, aber viel besser als deins (und viel kürzer;)). – Dima

+0

Wohin Sie es posten und diskutieren können, sehen Sie sich codereview: http://codereview.stackexchange.com/ – Dima

+0

Dies scheint nicht eine richtige Frage SO. –

Antwort

1

Sie können Hacker Rank für viele (nicht immer funktionale) Probleme zu lösen.

Auch das rote Buch (Functional Programming in Scala) hat große Probleme mit Lösungen auf GitHub.

Schließlich ist es überflüssig zu sagen, dass das Beantworten von SO-Fragen eine weitere gute Möglichkeit ist, um zu bekommen, was Sie wollen.

+0

Vielen Dank für Ihre Kommentare! –

0

Versuchen Sie, die Euler Project, die Ihre algorithmischen Fähigkeiten sowie Ihr Verständnis einer Programmiersprache Ihrer Wahl, zum Beispiel Scala herausfordert.

Auch Scala für den Ungeduldigen Buch enthält zahlreiche Übungen.

Verwandte Themen