Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen

Einführung

Als Teil des Ruby-Lernens werden wir den "Algorithmus-Praxistest" herausfordern. Wir werden das, was wir beim Lernen gelernt haben, zu diesem Zweck ausgeben. Diesmal aus der dritten Frage (dritte) des "1st Algorithm Practical Test". 1. Algorithmus Praktischer Test in der Vergangenheit

Ich werde meine Antwort und die Ausdrücke und Methoden vorstellen, die ich beim Antworten gelernt habe.

Problem

Es sind sechs verschiedene ganze Zahlen A, B, C, D, E, F angegeben. Erstellen Sie ein Programm, das das drittgrößte davon nachschlägt.

Zwang ≤ 1 ≤ A, B, C, D, E, F ≤ 100 ・ A, B, C, D, E, F sind alle unterschiedlich -Alle eingegebenen Werte sind ganze Zahlen.

Die Eingabe erfolgt in folgender Form.

A B C D E F

Eingabebeispiel
4 18 25 20 9 13
Ausgabebeispiel
=> 13

Antworten

Zunächst aus der Antwort, die ich eingereicht habe.

ary = gets.split(" ").map(&:to_i)
r_ary = ary.sort
print r_ary[3]

Empfängt die Eingabezeichenfolge als Ganzzahl in einem Array Es sortiert nach der Sortiermethode und gibt die drittgrößte Ganzzahl aus.

Von hier aus werde ich die Sortiermethode zusammenfassen, die ich dieses Mal zum ersten Mal verwendet habe.

Sortiermethode

Sortiert den Inhalt des Arrays. Elemente werden mit dem Operator <=> verglichen, und sort erzeugt ein sortiertes Array und gibt es zurück.

Zeichenfolgen sortieren

Wenn Sie nach einem Array mit Zeichenfolgen sortieren, wird es in der Reihenfolge "a, b, c ..." oder "a, i, u ..." sortiert.

ary1 = [ "d", "a", "e", "c", "b" ]
p ary1.sort
#=> ["a", "b", "c", "d", "e"]

Wenn sich die Zahlen als Elemente der Zeichenfolge im Array befinden, sieht dies folgendermaßen aus:

ary2 = ["9", "7", "10", "11", "8"]
p ary2.sort
#=> ["10", "11", "7", "8", "9"]                        

Ganzzahlen sortieren

Wenn es von Anfang an als ganzzahliges Element im Array enthalten ist, kann es so präzise wie die Antwort geschrieben werden. Wenn es sich in einem Array als Zeichenfolge befindet, verwenden Sie Block {}, um Folgendes zu tun:

ary2 = ["9", "7", "10", "11", "8"]
p ary2.sort{|a, b| a.to_i <=> b.to_i }
#=> ["7", "8", "9", "10", "11"]

Es wird jedoch mit der Methode to_i zum Vergleich im Block in eine Ganzzahl konvertiert. Beachten Sie, dass das generierte Array in eine Zeichenfolge zurückgesetzt wird.

Das gleiche kann mit der Methode sort_by gemacht werden.

ary2 = ["9", "7", "10", "11", "8"]
p ary2.sort_by{|a| a.to_i}
#=> ["7", "8", "9", "10", "11"]

Schließlich

Das Obige ist eine Zusammenfassung der Sorten, die beim Lösen der dritten Frage (dritte) des "1. Algorithmus-Praxistests" gelernt wurden.

Wenn Sie Fehler haben, wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten.

Recommended Posts

Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen
Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Ruby mit AtCoder 14 lernen [3. Algorithmus Praktischer Test Sprinkler] Hash-Erstellung, Schlüssel- / Wertschöpfung
Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Ruby-Lernen mit AtCoder 8 [1. Algorithmus-Praxistest-Doppelprüfung] Regulärer Ausdruck
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
[Ruby] Die Rolle von Indizes beim Lernen von Elementen in Arrays