Ruby mit AtCoder 6 lernen [Contest 168 Daher]

Einführung

Wir werden "Competition Programming (Competition Pro)" als Teil des Lernens von Ruby herausfordern. Wir werden das, was wir beim Lernen gelernt haben, zu diesem Zweck ausgeben. Diesmal aus der ersten Frage (daher) von "At Coder Beginners Contest 168". https://atcoder.jp/contests/abc168/tasks/abc168_a

Ich werde es basierend auf der von mir verwendeten Lösung und dem vom Beamten veröffentlichten Kommentar zusammenfassen.

Problem

Beim Zählen von Stiften auf Japanisch wird "Buch" als Hilfsnummer nach der Nummer hinzugefügt. Die Anzeige dieser Hilfsnummer hängt davon ab, an welche Nummer sie angehängt ist. Für ganze Zahlen von 999 oder weniger, wie man "Buch" liest, wenn man "N Bücher" sagt

・ Wenn der 1. Platz von N "2,4,5,7,9" ist, wird "hon" ・ Wenn der 1. Platz von N "0,1,6,8" ist, wird 'pon' ・ Wenn der 1. Platz von N "3" ist, ist es "schwarz".

Bei N drucken Sie die entsprechende "Buch" -Lesung aus.

Zwang N ist eine positive ganze Zahl kleiner oder gleich 999

Die Eingabe erfolgt in folgender Form.

N

#Beispiel
16

Im obigen Beispiel kann es bis zu 2 Mal geteilt werden.

Ausgabebeispiel
#Im Fall des obigen Beispiels
=> pon

Antwort ①

Zuerst ist der Code, den ich zuerst geschrieben habe.

a = gets.to_i.modulo(10)
if [2,4,5,7,9].include?(a)
  print "hon"
elsif [0,1,6,8].include?(a)
  print "pon"
else
  print "bon"
end

Verwenden Sie die Modulo-Methode, um nur die eine Ziffer von der Eingabe zu empfangen Die Beurteilung erfolgt nach der if-Anweisung und der include-Methode. einschließen? Was die Methode betrifft, habe ich einmal über den folgenden Artikel geschrieben [Ruby mit AtCoder-Anfängerauswahl lernen [Einige Summen] Erhöhen Sie die Methoden, die verwendet werden können](https://qiita.com/jag_507/items/cd3ad74d77ad933897b7#include%E3%83%A1%E3%82%BD%E3%83%83] % E3% 83% 89Range% E3% 82% AF% E3% 83% A9% E3% 82% B9) Hier werde ich auf die Modulo-Methode eingehen.

Modulo-Methode

Gibt den Rest geteilt durch die angegebene Zahl zurück. In der Antwort wird die Einerstelle als Rest herausgenommen, indem die ganze Zahl durch 10 geteilt wird.

#Beispiel
13.modulo(4)
=> 1
42.modulo(10)
=> 2

Antwort ② Fallsatz

In dem nach dem Wettbewerb verteilten Kommentar Eine intuitivere Art der Beschreibung mit einer Fallbeschreibung wird vorgestellt.

Im Folgenden werden wir die case-Anweisung nach Beantwortung mit der case-Anweisung einführen.

n = gets.to_i.modulo(10)
case n
when 2,4,5,7,9
  print 'hon'
when 0,1,6,8
  print 'pon'
else
  print 'bon'
end

In der ersten Antwort habe ich die Bedingung in ein Array eingefügt und mit der include? -Methode ein Urteil abgegeben. Mit der case-Anweisung können Sie den Code so schreiben, als würden Sie denken "Wenn der erste Platz 2,4,5,7,9 ... ist". Sicher scheint dieser besser zu sein.

case Anweisung

Dies ist nützlich, wenn Sie nach einer Übereinstimmung von mehreren Kandidaten für einen einzelnen Wert suchen. Der Operator "===" bestimmt, ob er mit dem übereinstimmt, was in wann angegeben ist.

case object
when value1
  # object ===Anweisung, die ausgeführt werden soll, wenn value1
when value2
  # object ===Anweisung, die ausgeführt werden soll, wenn value2
else
  #Anweisung, die ausgeführt werden soll, wenn nicht alle übereinstimmen
end

Der hier angezeigte Operator "===" ist Wenn es sich bei dem oben genannten Objekt um eine Zeichenfolge oder einen numerischen Wert handelt, setzen Sie es auf "==". Verwenden Sie für reguläre Ausdrücke "= ~" Im Fall eines Bereichs scheint es zu beurteilen, ob der Wert darin enthalten ist, wie include? Es scheint flexibel und einfach zu bedienen zu sein.

Schließlich

Bisher haben wir die Methoden vorgestellt, die aus der ersten Frage (daher) des "AtCoder Beginners Contest 168" gelernt wurden.

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

Recommended Posts

Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Rubin lernen 4
Rubin lernen 5
Ruby lernen 3
Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Ruby lernen 2
Rubin lernen 6
Rubin lernen 1
Ruby mit AtCoder lernen 11 So erhalten Sie häufig verwendete Standardeingaben
Lösen mit Ruby AtCoder ABC177 D Union Find
Ruby-Lernen mit AtCoder 8 [1. Algorithmus-Praxistest-Doppelprüfung] Regulärer Ausdruck
AtCoder Anfängerwettbewerb 168
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
Ruby mit AtCoder lernen 12 So verwenden Sie die Standardausgabe richtig (p / put / print)
Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen
Ruby-Lernpunkte (grundlegend)
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
AtCoder Anfängerwettbewerb 170 A, B, C bis Rubin
Ruby mit AtCoder 14 lernen [3. Algorithmus Praktischer Test Sprinkler] Hash-Erstellung, Schlüssel- / Wertschöpfung
Erste Schritte mit Ruby
[Rails] Lernen mit Rails Tutorial
Evolve Eve mit Ruby
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Einige Summen] Erhöhen Sie die Methoden, die verwendet werden können
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Münzen] Antworten Sie mit Funktionscode
AtCoder dwango Programmierwettbewerb B zum Lösen in Ruby, Perl und Java B.
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
AtCoder Beginner Contest 182 Teilnahmeartikel
Ruby on Rails Lernrekord -2020.10.03
Wechseln Sie die Ruby-Version mit rbenv
Ruby on Rails Lernrekord -2020.10.04
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby: Mail mit Starttls senden