Entrée standard Ruby

introduction

Cette fois, j'utilise souvent l'entrée standard pour des problèmes de programmation, donc je vais laisser une note. La langue utilisée est Ruby.

Pour les cordes

Lorsqu'il n'y a qu'un seul élément par ligne

Entrée standard
Tokyo
line = gets
p line
Résultat de sortie
"Tokyo"

Lorsqu'il y a plusieurs éléments sur une ligne

Entrée standard
Tokyo Osaka Kyoto
line = gets.split(' ')
p line
Résultat de sortie
["Tokyo", "Osaka", "Kyoto"]

En utilisant la méthode de fractionnement, les trois éléments sont stockés séparément dans le tableau.

Lorsqu'il y a des éléments un par un sur plusieurs lignes

Entrée standard
Tokyo
Osaka
Kyoto
line = readlines
len = line.length
i = 0

while i < len
    line[i] = line[i].chomp
    i += 1
end

p line 
Résultat de sortie
["Tokyo", "Osaka", "Kyoto"]

Une manière concise d'écrire ce qui précède est d'utiliser la méthode map.

Entrée standard
Tokyo
Osaka
Kyoto
line = readlines.map(&:chomp)
p line 
Résultat de sortie
["Tokyo", "Osaka", "Kyoto"]

Lorsqu'il y a plusieurs éléments sur plusieurs lignes

Entrée standard
Tokyo Osaka Kyoto
Japan USA China
line = readlines
len = line.length
i = 0

while i < len
    line[i] = line[i].chomp.split(' ')
    i += 1
end

p line
Résultat de sortie
[["Tokyo", "Osaka", "Kyoto"], ["Japan", "USA", "China"]]

Il y a aussi ce qui suit comme manière concise d'écrire ce qui précède

Entrée standard
Tokyo Osaka Kyoto
Japan USA China
lines = []
while line = gets
    lines << line.chomp.split(' ')
end
p lines
Résultat de sortie
[["Tokyo", "Osaka", "Kyoto"], ["Japan", "USA", "China"]]

En définissant while line = gets, il sera répété jusqu'à ce que toutes les valeurs d'entrée standard soient acquises.

Entrée standard
Tokyo Osaka Kyoto
Japan USA China
lines = readlines(chomp: true).map{|line| line.split(' ')}
p lines
Résultat de sortie
[["Tokyo", "Osaka", "Kyoto"], ["Japan", "USA", "China"]]

En regardant le résultat de sortie, la valeur reçue est une chaîne de caractères, donc si vous souhaitez recevoir une valeur numérique, procédez comme suit

Si vous souhaitez le recevoir numériquement

Il n'y a qu'un seul élément par ligne

Entrée standard
123
line = gets.to_i
p line
Résultat de sortie
123

Lorsqu'il y a plusieurs éléments sur une ligne

Entrée standard
1 2 3
line = gets.split(' ')
p line
Résultat de sortie
["1", "2", "3"]

S'il est laissé tel quel, il sera traité comme une chaîne de caractères, utilisez donc map pour le convertir en un tableau de type numérique.

Entrée standard
1 2 3
line = gets.split(' ').map(&:to_i)
p line
Résultat de sortie
[1, 2, 3]

Lorsqu'il y a un élément sur plusieurs lignes

Entrée standard
1
2
3
line = readlines.map(&:to_i)
p line 

Résultat de sortie
[1, 2, 3]

Lorsqu'il y a plusieurs éléments sur plusieurs lignes

Entrée standard
1 2 3
4 5 6
lines = []
while line = gets
    lines << line.chomp.split(' ').map(&:to_i)
end
p lines
Résultat de sortie
[[1, 2, 3], [4, 5, 6]]

Voici comment écrire de manière plus concise

Entrée standard
1 2 3
4 5 6
lines = readlines(chomp: true).map{|line| line.split(' ').map(&:to_i)}
p lines
Résultat de sortie
[[1, 2, 3], [4, 5, 6]]

finalement

Je pense qu'il existe diverses autres méthodes, je vais donc les mettre à jour de temps en temps.

Recommended Posts

Entrée standard Ruby
Entrée standard Ruby et diverses méthodes
Ruby reçoit une entrée multiligne
[ruby] Comment recevoir la valeur de l'entrée standard?
Lire l'entrée standard en Java
[Ruby] Recevoir les entrées de la console
Apprendre Ruby avec AtCoder 11 Comment recevoir une entrée standard souvent utilisée
Ruby apprentissage 4
Histoire de paiza.jp [solution d'entrée standard Java]
[Ruby] Tableau
Ruby apprentissage 5
Bases de Ruby
Revue Ruby 2
Ajout de rubis
[Rails] Obtenir une entrée standard pour les données multilignes
Paramètre Ruby 2
Problème de rubis ⑦
Ruby apprentissage 2
Ruby apprentissage 6
Paramètres Ruby 1
Ruby apprentissage 1
Ruby Review 1
[Ruby] Reconnaître les caractères de contrôle ASCII tels que ^ H comme prévu lors de l'acceptation d'une entrée standard
Une histoire emballée avec le scanner d'entrée standard de Java
À propos du flux d'entrée standard (System.in) une fois fermé
Ruby on Rails Comment implémenter la saisie d'adresse automatique
[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]