Wie fasse ich Array von ganzen Zahlen als ein Array von Bereichen zusammen?

7

Ich möchte eine Eingabe machen wie:

%Vor%

und wandle es in etwa so um:

%Vor%

Jedes Unterfeld repräsentiert einen Bereich von ganzen Zahlen.

    
Larsenal 24.12.2011, 00:08
quelle

5 Antworten

19

Funktioneller Ansatz mit Enumerable # chunk :

%Vor%

Wie es funktioniert: Einmal indizierte, aufeinanderfolgende Elemente im Array haben die gleiche x - idx , also verwenden wir diesen Wert zum Chunk (Gruppierung von aufeinander folgenden Elementen) das Eingabe-Array. Schließlich müssen wir nur die ersten und letzten Elemente jeder Gruppe nehmen, um die Paare zu bilden.

    
tokland 24.12.2011, 00:24
quelle
4

Dies ist fast direkt aus der aufzählbaren # slice_before Methodendokumentation :

%Vor%

Dies sollte mit Zeichen, Daten, irgendetwas mit einer .succ -Methode funktionieren.

    
steenslag 24.12.2011 14:04
quelle
3

Hmm, naja, es ist nicht das Meisterwerk von Tokland, aber ich denke, es könnte eine gute, unkomplizierte Lösung sein. / p> %Vor%     

DigitalRoss 24.12.2011 00:57
quelle
2

Eine noch einfachere Lösung als @ toklands sehr nette verwendet %Co_de% :

%Vor%

Hinweis : chunk_while wurde in Ruby 2.3 eingeführt

    
Marc-André Lafortune 06.10.2016 03:51
quelle
0

Ein anderer Ansatz

%Vor%

Ähnlich wie bei Larsenal, aber mit inject, um das langweilige Zeug zu verwalten.

    
Frederick Cheung 24.12.2011 00:32
quelle