Apprendre Ruby avec AtCoder 11 Comment recevoir une entrée standard souvent utilisée

introduction

Participer à une programmation compétitive dans le cadre de l'apprentissage de Ruby et des algorithmes. Ici, nous sortirons ce que nous avons appris dans l'apprentissage à cet effet. Cette fois, je voudrais résumer le "comment recevoir des entrées standard" que j'ai utilisé pour résoudre le problème jusqu'à présent.

Recevez un élément

Chaîne

Exemple d'entrée
Ruby
s = gets.chomp
# print s
# => Ruby 

La méthode chomp renvoie une chaîne avec le code de saut de ligne supprimé de la fin de la chaîne. Vous pouvez l'attacher en toute sécurité afin de ne recevoir que la chaîne de caractères que vous souhaitez recevoir.

entier

Exemple d'entrée
64
s = gets.to_i
# print s
# => 64

L'entrée standard reçue par la méthode gets est reçue sous forme de type String. Convertit la chaîne reçue en type Integer en ajoutant la méthode to_i à la fin. Dans ce cas, la méthode chomp n'est pas nécessaire.

Divisez un élément dans n'importe quelle forme

Selon le problème, il existe pas mal de cas où vous pouvez vous rapprocher de la réponse en démontant les éléments. Voici quelques exemples.

Divisez la chaîne en caractères et faites-en un tableau

Exemple d'entrée
Ruby
ary = gets.split("")
ary = gets.split(//) #Expressions régulières
# print ary
# => ["R", "u", "b", "y"]

La méthode split est une méthode qui divise une chaîne de caractères en un tableau. Vous pouvez spécifier un délimiteur comme premier argument dans (). Si vous souhaitez diviser chaque caractère, vous pouvez utiliser ("") ou (//).

Divisez la chaîne de caractères selon n'importe quelle règle et faites-en un tableau

Exemple d'entrée
RubyRuby
ary = gets.scan(/../) #①
ary = gets.scan("R") #②
ary = gets.scan(/Ru./) #③
# print ary
#① => ["Ru", "by", "Ru", "by"]
#② => ["R", "R"]
#③ => ["Rub", "Rub"]

La méthode scan correspond à plusieurs reprises au modèle spécifié dans l'argument et renvoie la sous-chaîne correspondante sous forme de tableau. Par conséquent, il peut être utilisé lorsque vous souhaitez diviser l'entrée selon une certaine règle et la gérer. Cela peut être un peu difficile jusqu'à ce que vous vous habituiez à exprimer les règles avec des expressions régulières.

Recevez plusieurs éléments d'une seule ligne

C'est un motif qui reçoit plusieurs éléments à la fois, séparés par un espace demi-largeur.

Recevoir sous forme de tableau (chaîne de caractères)

Exemple d'entrée
Ruby PHP
ary = gets.split(" ")#L'espace entre les doubles deux points est un espace demi-largeur
# print ary
# => ["Ruby", "PHP"]

En spécifiant un espace demi-largeur comme ci-dessus dans le premier argument de la méthode split, Vous pouvez recevoir plusieurs éléments séparés par un espace demi-largeur à la fois.

Recevoir dans la variable (chaîne de caractères)

Exemple d'entrée
Ruby PHP
a,b = gets.split(" ")
# print a
# => "Ruby"
# print b
# => "PHP"

Si vous avez un nombre limité d'éléments à recevoir, il peut être plus pratique de recevoir chacun dans une variable. Dans ce cas, vous pouvez recevoir chacun d'eux en séparant les variables par "," comme décrit ci-dessus.

Recevoir un entier

Exemple d'entrée
123 456
ary = gets.split(" ").map(&:to_i) #① Recevoir dans un tableau
a,b = gets.split(" ").map(&:to_i) #② Recevoir en tant que variable

# print ary
# => [123, 456]

# print a
# => 123
# print b
# => 456

La méthode map parcourt les blocs autant de fois qu'il y a d'éléments dans le tableau et renvoie le tableau résultant. Lorsque vous souhaitez appliquer une méthode à chaque élément (cette fois, vous souhaitez convertir tous les éléments en type entier), Il peut être abrégé comme ci-dessus en utilisant &.

Recevez des éléments qui s'étendent sur plusieurs lignes à la fois

méthode des temps

Dans la question de la programmation compétitive Tout d'abord, "le nombre d'éléments donnés après cela" est entré, Il y a de nombreux problèmes avec le modèle selon lequel les «éléments nécessaires à la réponse» sont donnés à partir de la ligne suivante. Dans ce cas, vous pouvez utiliser la méthode times pour recevoir les éléments ensemble.

Exemple d'entrée
3 #Nombre d'éléments donnés après cela
4 8
8 2
5 2
#Lors de la réception sous forme de type entier
n = gets.to_i #Nombre d'éléments donnés dans la première ligne
ary = n.times.map{gets.split.map(&:to_i)}
# print ary
# => [[2, 2], [8, 2], [5, 2]]

#Lors de la réception en tant que type de chaîne
n = gets.to_i
ary = n.times.map{gets.split}
# print ary
# => [["2", "2"], ["8", "2"], ["5", "2"]]

Avec une combinaison de méthode de temps et de méthode de carte Les entrées sont organisées sous la forme d'un tableau bidimensionnel, ce qui est pratique pour effectuer divers jugements.

finalement

Voici comment recevoir une entrée standard souvent utilisée. Si je rencontre d'autres méthodes en résolvant le problème, j'aimerais les ajouter à chaque fois.

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

Recommended Posts

Apprendre Ruby avec AtCoder 11 Comment recevoir une entrée standard souvent utilisée
[ruby] Comment recevoir la valeur de l'entrée standard?
Apprendre Ruby avec AtCoder 12 Comment utiliser correctement la sortie standard (p / met / print)
Apprendre Ruby avec AtCoder 6 [Concours 168 Donc]
Apprendre Ruby avec AtCoder 7 [Contest 168 Triple Dots]
Entrée standard Ruby
AtCoder ABC127 D hash à résoudre avec Ruby 2.7.1
[Ruby] Comment utiliser la sortie standard dans le branchement conditionnel
[Ruby] Récapitulatif de la façon d'obtenir des valeurs à partir d'une entrée standard [Mesures de contrôle des compétences Paiza]
[Java] Comment chiffrer avec le chiffrement AES avec une bibliothèque standard
Comment sortir le standard d'un tableau avec for Each
Apprendre Ruby avec la sélection des débutants AtCoder [Quelques sommes] Augmentez les méthodes qui peuvent être utilisées
Je suis immédiatement tombé sur la méthode d'entrée standard avec AtCoder.
Comment gérer différentes versions de rbenv et Ruby
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Comment utiliser le retour Ruby
[Ruby] Comment commenter
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Ruby: Comment utiliser les cookies
[ruby] Comment recevoir la valeur de l'entrée standard?
Entrée standard Ruby
De Java à Ruby !!
Ruby reçoit une entrée multiligne
Utiliser le programme C de Ruby
CHATBOT (Dialogflow) utilisé depuis Ruby
Entrée dans la console Java
Apprendre Ruby avec AtCoder 11 Comment recevoir une entrée standard souvent utilisée
Entrée standard Ruby et diverses méthodes
[Ruby] Échapper à plusieurs boucles [Nest]
Introduction à Ruby (à partir d'autres langues)
Comment afficher 0 sur le côté gauche de la valeur d'entrée standard
Modèles de conception à utiliser avec les bibliothèques Java fréquemment utilisées - Modèle d'usine
Comment démarrer avec Slim
Comment itérer indéfiniment en Ruby
Entrée standard Ruby et diverses méthodes
Comment installer Ruby via rbenv
Comment entourer n'importe quel caractère avec "~"
Comment utiliser Ruby on Rails
Comment installer Bootstrap dans Ruby
Comment utiliser la méthode Ruby inject
Comment exécuter l'IRB de Ruby (Ruby interactif)
Comment démarrer Camunda avec Docker
Apprendre Ruby avec AtCoder 8 [1er test pratique de l'algorithme double vérification] Expression régulière
[Rails] Comment appliquer le CSS utilisé dans l'application principale avec Administrer
Comment insérer un traitement avec n'importe quel nombre d'éléments dans le traitement itératif dans Ruby