Teilnahme an wettbewerbsfähiger Programmierung als Teil des Lernens von Ruby und Algorithmen. Hier werden wir das ausgeben, was wir zu diesem Zweck im Lernen gelernt haben. Dieses Mal möchte ich zusammenfassen, wie ich bisher Standardeingaben erhalten habe, um das Problem zu lösen.
Eingabebeispiel
Ruby
s = gets.chomp
# print s
# => Ruby
Die chomp-Methode gibt eine Zeichenfolge zurück, bei der der Zeilenvorschubcode am Ende der Zeichenfolge entfernt ist. Es ist sicher, es anzuhängen, damit Sie nur die Zeichenfolge erhalten können, die Sie erhalten möchten.
Eingabebeispiel
64
s = gets.to_i
# print s
# => 64
Die von der Methode gets empfangene Standardeingabe wird als String-Typ empfangen. Konvertiert die empfangene Zeichenfolge in den Integer-Typ, indem am Ende die Methode to_i hinzugefügt wird. In diesem Fall wird die Chomp-Methode nicht benötigt.
Je nach Problem gibt es einige Fälle, in denen Sie der Antwort durch Zerlegen der Elemente näher kommen können. Hier sind einige Beispiele.
Eingabebeispiel
Ruby
ary = gets.split("")
ary = gets.split(//) #Reguläre Ausdrücke
# print ary
# => ["R", "u", "b", "y"]
Die Split-Methode ist eine Methode, die eine Zeichenfolge in ein Array aufteilt. Sie können ein Trennzeichen als erstes Argument in () angeben. Wenn Sie jedes Zeichen teilen möchten, können Sie ("") oder (//) verwenden.
Eingabebeispiel
RubyRuby
ary = gets.scan(/../) #①
ary = gets.scan("R") #②
ary = gets.scan(/Ru./) #③
# print ary
#① => ["Ru", "by", "Ru", "by"]
#② => ["R", "R"]
#③ => ["Rub", "Rub"]
Die Scanmethode stimmt wiederholt mit dem im Argument angegebenen Muster überein und gibt den übereinstimmenden Teilstring als Array zurück. Daher kann es verwendet werden, wenn Sie die Eingabe nach einer bestimmten Regel teilen und verarbeiten möchten. Es kann etwas schwierig sein, bis Sie sich daran gewöhnt haben, die Regeln mit regulären Ausdrücken auszudrücken.
Es ist ein Muster, das mehrere Elemente gleichzeitig empfängt, die durch einen Abstand von halber Breite getrennt sind.
Eingabebeispiel
Ruby PHP
ary = gets.split(" ")#Der Abstand zwischen den Doppelpunkten ist ein Abstand von halber Breite
# print ary
# => ["Ruby", "PHP"]
Durch Angabe eines Raums mit halber Breite wie oben im ersten Argument der Split-Methode Sie können mehrere Elemente empfangen, die durch einen Abstand von halber Breite voneinander getrennt sind.
Eingabebeispiel
Ruby PHP
a,b = gets.split(" ")
# print a
# => "Ruby"
# print b
# => "PHP"
Wenn Sie nur eine begrenzte Anzahl von Elementen empfangen können, ist es möglicherweise bequemer, jedes Element in einer Variablen zu empfangen. In einem solchen Fall können Sie jede empfangen, indem Sie die Variablen wie oben beschrieben durch "," trennen.
Eingabebeispiel
123 456
ary = gets.split(" ").map(&:to_i) #① In einem Array empfangen
a,b = gets.split(" ").map(&:to_i) #② Als Variable empfangen
# print ary
# => [123, 456]
# print a
# => 123
# print b
# => 456
Die Map-Methode durchläuft die Blöcke so oft, wie Elemente im Array vorhanden sind, und gibt das resultierende Array zurück. Wenn Sie auf jedes Element eine Methode anwenden möchten (diesmal möchten Sie alle Elemente in einen Ganzzahltyp konvertieren), Es kann wie oben mit & abgekürzt werden.
In der Frage der wettbewerbsfähigen Programmierung Zuerst wird "die Anzahl der danach angegebenen Elemente" eingegeben, Es gibt viele Probleme mit dem Muster, dass die "für die Antwort notwendigen Elemente" in der nächsten Zeile angegeben werden. In diesem Fall können Sie die times-Methode verwenden, um die Elemente zusammen zu empfangen.
Eingabebeispiel
3 #Anzahl der danach angegebenen Elemente
4 8
8 2
5 2
#Beim Empfang als Integer-Typ
n = gets.to_i #Anzahl der in der ersten Zeile angegebenen Elemente
ary = n.times.map{gets.split.map(&:to_i)}
# print ary
# => [[2, 2], [8, 2], [5, 2]]
#Beim Empfang als String-Typ
n = gets.to_i
ary = n.times.map{gets.split}
# print ary
# => [["2", "2"], ["8", "2"], ["5", "2"]]
Mit einer Kombination aus Zeitmethode und Kartenmethode Die Eingaben sind als zweidimensionales Array organisiert, was für verschiedene Beurteilungen praktisch ist.
Auf diese Weise erhalten Sie häufig verwendete Standardeingaben. Wenn ich bei der Lösung des Problems auf andere Methoden stoße, möchte ich sie jedes Mal hinzufügen.
Wenn Sie Fehler haben, wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten.
Recommended Posts