Wie kann 'takeUntil' einer Liste implementiert werden?

8

Ich möchte alle Elemente vor und gleich dem ersten 7 finden:

%Vor%

Meine Lösung ist:

%Vor%

Das Ergebnis ist:

%Vor%

Gibt es eine andere Lösung?

    
Freewind 09.11.2015, 04:48
quelle

7 Antworten

10

One-Liner für ungeduldig:

%Vor%


Generische Version:

Es braucht jedes Prädikat als Argument. Verwendet span , um den Hauptjob auszuführen:

%Vor%


Tail-rekursive Version.

Nur um alternative Ansätze zu veranschaulichen, ist es nicht effizienter als vorherige Lösung.

%Vor%     
Aivean 09.11.2015, 05:55
quelle
5

Die TakeWhile-Implementierung von scala.collection.List entlehnen und etwas ändern:

%Vor%     
marios 09.11.2015 06:05
quelle
3

Hier ist ein Weg, um mit foldLeft zu kommen, und eine rekursive Tail-Version, um lange Listen kurzzuschließen.

Es gibt auch die Tests, mit denen ich herumgespielt habe.

%Vor%     
Morgen 09.11.2015 04:55
quelle
2

Mögliche Vorgehensweise:

%Vor%     
Nyavro 09.11.2015 06:09
quelle
2

Sie könnten folgende Funktion verwenden,

%Vor%

Tail Recursive-Version

%Vor%     
757071 09.11.2015 05:08
quelle
0

Dies funktioniert auch und funktioniert elegant mit Listen, die das Ziel nicht enthalten.

%Vor%     
jwvh 09.11.2015 05:23
quelle
0

Einige Möglichkeiten mit eingebauten Funktionen:

%Vor%     
mohit 09.11.2015 07:27
quelle

Tags und Links