Ruby mit AtCoder lernen 12 So verwenden Sie die Standardausgabe richtig (p / put / print)

Einführung

Teilnahme an wettbewerbsfähiger Programmierung als Teil des Lernens von Ruby und Algorithmen. Hier geben wir aus, was wir im Laufe des Lernens gelernt haben.

Diesmal über die Standardausgabe. Ich habe bisher hauptsächlich aus irgendeinem Grund Druck verwendet. Ich dachte, es wäre besser, wenn ich eine Unterscheidung treffen könnte, also werde ich es zusammenfassen.

Einfach zusammengefasst

** p Methode ** -Ausgabe, die den Typ des Objekts widerspiegelt (der Zeichenfolgentyp wird von ** "" ** umgeben ausgegeben. Der Integer-Typ bleibt unverändert) ・ Zeilenumbrüche für jede Zeile

** setzt Methode ** -Konvertieren Sie ein Objekt in eine Zeichenfolge und geben Sie es aus ・ Zeilenumbrüche für jede Zeile

** Druckmethode ** -Konvertieren Sie ein Objekt in eine Zeichenfolge und geben Sie es aus · ** Nicht kaputtmachen **

p Methode

Ausgaben, die den Typ des Objekts widerspiegeln. Da die Zeichenfolge in der von ** "" ** umgebenen Form ausgegeben wird, Wenn die Antwort eine Zeichenfolge ist, ist die Antwort falsch. Es gibt kein Problem, wenn Sie mit einer ganzen Zahl antworten.

p "test"
p 123

Ausgabe


"test"
123

setzt Methode

Konvertiert das Objekt in eine Zeichenfolge und gibt es aus. Am Ende der Zeichenfolge tritt ein Zeilenumbruch auf.

puts "test"
puts 123

Ausgabe


test
123

Druckmethode

Konvertiert das Objekt in eine Zeichenfolge und gibt es aus. Im Gegensatz zur Puts-Methode werden keine Zeilenumbrüche vorgenommen.

print "test"
print 123

Ausgabe


test123

Bei der aufeinanderfolgenden Ausgabe von zwei Objekten wie oben beschrieben werden die Zeichenfolgen in einem verbundenen Zustand ausgegeben.

Da sich das Ausgabeformat geringfügig unterscheidet, scheint es je nach Problem erforderlich zu sein, es ordnungsgemäß zu verwenden.

Problembeispiel ①

Aus "Atcoder Biginners Selection" Frage 2 "Produkt"

Es gibt zwei positive ganze Zahlen a und b. Ausgabe Gerade, wenn das Produkt von a und b gerade ist, und Ungerade, wenn es ungerade ist.

Eingabebeispiel


3 4

Antwortbeispiel


a, b = gets.split(" ").map(&:to_i)
p (a*b).odd? ? "Odd" : "Even" #p Methode
puts (a*b).odd? ? "Odd" : "Even" #setzt Methode
print (a*b).odd? ? "Odd" : "Even" #Druckmethode

Ausgabe


"Even" #p Methode falsche Antwort
Even #setzt Methode richtige Antwort
Even #Druckmethode richtige Antwort

** "" Die in ** enthaltene p-Methode war falsch. Die Antwort mit der Puts-Methode oder der Druckmethode ist die richtige Antwort.

Problembeispiel ②

Aus "Atcoder Biginners Selection" Frage 3 "Platzieren von Murmeln"

Es gibt ein Quadrat, das aus drei Quadraten besteht. "0" oder "1" wird auf jedes Quadrat geschrieben, und die Perlenkugel wird mit "1" auf das Quadrat gelegt. Bitte antworten Sie, wie viele Quadrate Perlenkugeln haben.

Eingabebeispiel


101

Antwortbeispiel


ary = gets.split("").map(&:to_i)
count = 0
ary.each{|i| i==1 ? count+=1 : count+=0}
p count #p Methode
puts count #setzt Methode
print count #Druckmethode

Ausgabe


2 #p Methode richtige Antwort
2 #setzt Methode richtige Antwort
2 #Druckmethode richtige Antwort

In dieser Frage war jedes Ausgabemuster korrekt.

Problembeispiel ③

Aus "Atcoder Biginners Selection" Frage 1 "Willkommen bei AtCoder"

Gegeben sind die ganzen Zahlen a, b, c und die Zeichenfolge s. Geben Sie das Berechnungsergebnis von a + b + c und die Zeichenfolge nebeneinander mit einem Abstand von halber Breite dazwischen aus.

Eingabebeispiel


1
2 3
test

Antwortbeispiel


a = gets.to_i
b, c = gets.split(" ").map(&:to_i)
s = gets.chomp
p "#{a+b+c} #{s}" #p Methode
puts "#{a+b+c} #{s}" #setzt Methode
print "#{a+b+c} #{s}" #Druckmethode

Ausgabe


"6 test" #p Methode falsche Antwort
6 test #setzt Methode richtige Antwort
6 test #Druckmethode richtige Antwort

Auch in diesem Problem war wie in Problembeispiel (1) nur die p-Methode falsch. ** Bei Problemen, bei denen eine Zeichenfolge und eine Antwort ausgegeben werden, ist es besser, mit der Puts-Methode oder der Druckmethode zu antworten. ** **.

Schließlich

Hier geht es darum, wie Sie die Standardausgabe verwenden, die Sie häufig verwenden.

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

Recommended Posts

Ruby mit AtCoder lernen 12 So verwenden Sie die Standardausgabe richtig (p / put / print)
Ruby mit AtCoder lernen 11 So erhalten Sie häufig verwendete Standardeingaben
[Ruby] Verwendung der Standardausgabe bei der bedingten Verzweigung
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Ruby print setzt die Ausgabemethode p printf
So geben Sie einen Standard aus einem Array mit for Each aus
Verwendung von Ruby return
Ruby: Wie man Cookies benutzt
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Verwendung von Ruby on Rails
Wie man mssql-tools mit alpine benutzt
Verwendung der Ruby-Inject-Methode
Verwendung von BootStrap mit Play Framework
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Rubinlänge, -größe, -anzahl Verwendung
[Ruby] Wie man Slice für Anfänger benutzt
[Ruby on Rails] Verwendung von redirect_to
[Ruby] Unterschied zwischen print, put und p
Ruby: CSV :: Verwendung von Table Note
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Verwendung des Java-Frameworks mit AWS Lambda! ??
Ausgabe der Verwendung der Slice-Methode
Verwendung der Java-API mit Lambda-Ausdrücken
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
Verwendung des NFS-Protokolls Version 2 mit Ubuntu 18.04
[Ruby] Wie erhalte ich den Wert von der Standardeingabe?
[Ruby-Grundlagen] Verwendung der Slice-Methode
Verwendung von Oracle JDK 9 EA mit Travis CI
So erstellen Sie eine mit Ruby erstellte LINE-Messaging-Funktion
Verwendung der Z3-Bibliothek in Scala mit Eclipse
[Java] Verschlüsselung mit AES-Verschlüsselung mit Standardbibliothek
[Ruby] Verwendung von rbenv (Version `x.x.x' ist nicht installiert)
Verwendung der JDD-Bibliothek in Scala mit Eclipse
Verwendung von Map
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet