Rufen Sie Indexpaare von Unterlisten aus einer Liste von ganzen Zahlen ab

sge

Wie erhalte ich mit Scala eine Liste von Tupeln, die Start- und Endindizes von Unterlisten innerhalb einer anderen Liste von Ganzzahlen enthalten?

Betrachten Sie diese Liste:

val xs = List(3, 1, 1, 3, 5, 4, 4, 5)

Es gibt zwei Unterlisten, die mit derselben Zahl beginnen und enden und kleinere Zahlen dazwischen haben - 3, 1, 1, 3und 5, 4, 4, 5.

Ich möchte die Anfangs- und Endindizes dieser Unterlisten in einer Liste von Tupeln sammeln. Basierend auf dem obigen Beispiel wäre diese Liste:

List[(Int, Int)]((0, 3), (4, 7))

.. weil die erste Teilmenge bei Index 0 beginnt und bei 3 endet und die zweite die Indizes 4 und 7 hat.

Was wäre eine elegante Scala-Funktion, die dies tut?

Bearbeiten: Ich kenne den zwingenden Weg, dies mit vars und for-Schleifen zu tun . Ich bin daran interessiert, eine elegante funktionale Lösung für dieses Problem zu finden.

Andrey Tjukin

Hier ist eine "Einzeiler"-Lösung:

xs.zipWithIndex
  .groupBy(_._1)
  .mapValues(_.map(_._2).combinations(2).map(c => (c(0), c(1))).toList)
  .toList
  .flatMap { case (x, intervals) => 
    intervals.filter{ case (a, b) => xs.slice(a, b).exists(_ < x)}
  }

produziert:

List((4,7), (0,3))

Eine hoffentlich etwas lesbarere Version mit sinnvoll benannten Zwischenergebnissen:

val numbersToIndices = xs.zipWithIndex.groupBy(_._1).mapValues(_.map(_._2))
val groupedIntervalsAsLists = numbersToIndices.mapValues(_.combinations(2).toList)
val groupedIntervals = intervalsAsLists.mapValues(_.map(v => (v(0), v(1)))).toList
val valleys = for {
  (x, intervals) <- groupedIntervals
  (a, b) <- intervals
  if xs.slice(a, b).exists(_ < x)
} yield (a, b)

println(valleys)

wieder findet

List((4,7), (0,3))

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Summen von ganzen Zahlen aus einer Liste von Listen

Aufteilen einer Liste von ganzen Zahlen in Unterlisten mit 0 als Trennzeichen

Entfernen von ganzen Zahlen aus einer Liste+Python

Python Erstellen Sie eine Liste von Unterlisten aus einer Liste

Identifizieren von ganzen Zahlen aus einer Liste mit Strings und ganzen Zahlen

Berechnen Sie Teilmengen einer gegebenen Liste von ganzen Zahlen

Berechnen Sie den Modus einer Liste von ganzen Zahlen?

Rufen Sie Zeilen aus einer Matrix ab, indem Sie eine Liste von rowIndices bereitstellen

Unterlisten aus einer Liste von Listen entfernen

Rufen Sie eine Liste von Feldern aus einer Klasse ab, die in einer Liste instanziiert ist, und vergleichen Sie sie

Berechnen einer Liste kumulativer Summen aus einer Liste von ganzen Zahlen mit Java-Streams

BitBucket-API: So rufen Sie eine Liste von Zweigen aus einer Repository-UUID ab

Rufen Sie Listen aus einer Liste von Listen ab, die auf den angegebenen ersten Elementen basieren

Rufen Sie aus einer Liste von Objekten einen Zeichenvektor mit ihren Namen ab

Rufen Sie mehrere Elemente anhand von IDs aus einer Liste ab

So rufen Sie Bits von Zahlen ab

Erstellen eines Arrays von Bodendaten aus einer Liste von ganzen Zahlen in ECLiPSe

Python konvertiert die Zeichenfolgendarstellung einer verschachtelten Liste von ganzen Zahlen in eine verschachtelte Liste von ganzen Zahlen

Finde die Summe einer geraden Zahl aus einer Liste von ganzen Zahlen

Wie iterieren Sie über eine Liste mit einer Liste von ganzen Zahlen?

Wie teile ich eine geordnete Liste von ganzen Zahlen in gleichmäßig große Unterlisten auf?

(Python) Das Konvertieren einer Liste von ganzen Zahlen in Tupel/Mengen ändert die Positionen von ganzen Zahlen

Multiplizieren von ganzen Zahlen in jeder möglichen Teilmenge einer aufeinanderfolgenden Liste von ganzen Zahlen

Diskretisieren einer Liste durch eine andere Liste von ganzen Zahlen

Wie extrahiere ich einzelne Ziffern aus einer Liste von ganzen Zahlen?

Wie sortiere ich einen Ausschnitt aus einer Liste von ganzen Zahlen?

Kostenlose Liste von ganzen Zahlen

Geben Sie bei einer gegebenen Liste von ganzen Zahlen und einer ganzen Zahl k zurück, ob k als Summe beliebiger Zahlen aus dieser Liste oder ihrer Multiplikationen erstellt werden kann

Mutieren Sie eine Liste von Listen mit ganzen Zahlen mit einer bestimmten Wahrscheinlichkeit

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv