Apprendre Ruby avec AtCoder 9 [1er test pratique d'algorithme 3ème] Tri des éléments du tableau

introduction

Dans le cadre de l'apprentissage Ruby, nous mettrons au défi le «test pratique de l'algorithme». Nous sortirons ce que nous avons appris dans l'apprentissage à cette fin. Cette fois, à partir de la troisième question (troisième) du "1er test pratique de l'algorithme". Question précédente du premier test pratique d'algorithme

Je présenterai ma réponse ainsi que les expressions et méthodes que j'ai apprises en répondant.

problème

Six entiers différents A, B, C, D, E, F sont donnés. Créez un programme qui recherche le troisième plus grand d'entre eux.

Contrainte ・ 1 ≤ A, B, C, D, E, F ≤ 100 ・ A, B, C, D, E, F sont tous différents -Toutes les valeurs entrées sont des entiers.

L'entrée est donnée sous la forme suivante.

A B C D E F

Exemple d'entrée
4 18 25 20 9 13
Exemple de sortie
=> 13

répondre

Tout d'abord, d'après la réponse que j'ai soumise.

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

Reçoit la chaîne de caractères d'entrée sous forme d'entier dans un tableau Il trie en utilisant la méthode de tri et génère le troisième plus grand entier.

De là, je vais résumer la méthode de tri que j'ai utilisée pour la première fois cette fois.

méthode de tri

Trie le contenu du tableau. Les éléments sont comparés à l'aide de l'opérateur <=>, et sort produit et renvoie un tableau trié.

Tri des chaînes

Si vous triez par un tableau contenant des chaînes de caractères, il sera trié dans l'ordre "a, b, c ..." ou "a, i, u ...".

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

Si les nombres sont dans le tableau en tant qu'éléments de la chaîne, cela ressemble à ceci:

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

Tri d'entiers

S'il est inclus dans le tableau en tant qu'élément entier depuis le début, il peut être écrit de manière aussi concise que la réponse, S'il se trouve dans un tableau sous forme de chaîne, utilisez block {} pour effectuer les opérations suivantes:

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

Cependant, il est converti en entier à l'aide de la méthode to_i pour comparaison dans le bloc. Notez que le tableau généré redevient une chaîne.

La même chose peut être faite avec la méthode sort_by.

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

finalement

Ce qui précède est un résumé des sortes apprises en résolvant la troisième question (troisième) du "1er test pratique de l'algorithme".

Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.

Recommended Posts

Apprendre Ruby avec AtCoder 9 [1er test pratique d'algorithme 3ème] Tri des éléments du tableau
Apprendre Ruby avec AtCoder 10 [1er test pratique d'algorithme DoubleCamelCase Sort]
Apprentissage de Ruby avec AtCoder 14 [3rd Algorithm Practical Test Sprinkler] Création de hachage, ajout de clé / valeur
Résolution avec Ruby AtCoder 1er test pratique de l'algorithme Une gestion des exceptions
Apprendre Ruby avec AtCoder 8 [1er test pratique de l'algorithme double vérification] Expression régulière
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Apprendre Ruby avec AtCoder 6 [Concours 168 Donc]
Apprendre Ruby avec AtCoder 7 [Contest 168 Triple Dots]
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
[Ruby] Le rôle des indices dans l'apprentissage des éléments dans les tableaux