Ruby-Lernen mit AtCoder 8 [1. Algorithmus-Praxistest-Doppelprüfung] Regulärer Ausdruck

Einführung

Als Teil des Ruby-Lernens werden wir den "Algorithmus-Praxistest" herausfordern. Wir werden das, was wir beim Lernen gelernt haben, zu diesem Zweck ausgeben. Diesmal ab der ersten Frage (Doppelprüfung) des "1st Algorithm Practical Test". 1. Algorithmus Praktischer Test in der Vergangenheit

Ich werde meine Antwort und die Ausdrücke und Methoden vorstellen, die ich beim Antworten gelernt habe.

Problem

Erstellen Sie ein Programm, das eine dreistellige Ganzzahl empfängt, verdoppelt und ausgibt. Die Eingabezeichenfolge S kann jedoch mit niedrigeren und niedrigeren Buchstaben gemischt werden. In diesem Fall wird ein Fehler ausgegeben. Wenn S eine dreistellige Ganzzahl ist (einschließlich derjenigen, die mit '0' beginnen), geben Sie eine Ganzzahl aus, die doppelt so hoch ist, andernfalls 'Fehler'.

Zwang ・ S ist eine Zeichenkette der Länge 3 ・ Jeder Buchstabe von S ist eine Zahl oder ein niedrigeres Alphabet

Die Eingabe erfolgt in folgender Form.

S

Eingabebeispiel ①
678
Eingabebeispiel ②
4g4
Ausgabebeispiel
#Eingabebeispiel ① 678
=> 678
#Eingabebeispiel ② 4g4
=> error

Antworten

Zunächst aus der Antwort, die ich eingereicht habe.

s = gets.chomp
print /^[0-9]+$/ === s ? s.to_i * 2 : "error"

Die empfangene Zeichenfolge wird unter Verwendung eines regulären Ausdrucks beurteilt, ob die Zeichenfolge jeder Ziffer 0 bis 9 ist, und sie wird bestimmt. Wenn es wahr ist, wird es in den Integer-Typ konvertiert und dann verdoppelt. Wenn es falsch ist, wird es als Fehler ausgegeben.

Reguläre Ausdrücke

Hier möchte ich noch einmal bestätigen, was ein regulärer Ausdruck ist. Das Wort "regulärer Ausdruck" selbst war zunächst schwer zu verstehen, Nachdem ich diesen Artikel gelesen hatte, habe ich mich irgendwie in ihn verliebt. Was ist ein regulärer Ausdruck?

Was ist ein regulärer Ausdruck? ** "Ausdrucksmethode, die verschiedene Zeichenfolgen mit einer Zeichenfolge ausdrückt" ** Und ** "nützlich zum Suchen und Ersetzen von Zeichenketten" **.

Es mag andere geben, aber "andere" werden in Erinnerung bleiben, wenn Sie diesen "anderen" treffen.

Beurteilung durch einen regulären Ausdruck, der eine ganze Zahl ausdrückt

Nachdem wir definiert haben, was ein regulärer Ausdruck ist, werfen wir einen Blick auf den diesmal verwendeten regulären Ausdruck.

/^[0-9]+$/ === s

Das Folgende bezieht sich auf die hier verwendeten regulären Ausdrücke.

=== Legt fest, ob das Zeichenfolgenmuster für reguläre Ausdrücke auf der linken Seite in der Zeichenfolge auf der rechten Seite enthalten ist. Die linke und die rechte Seite dürfen nicht vertauscht werden.

/ / //で囲むことで正規表現オブジェクトを生成することが出来ます。 Mit anderen Worten, es ist eine Erklärung, dass "was in // eingeschlossen ist, ein regulärer Ausdruck ist".

[ ] Der Teil zwischen den eckigen Klammern [] wird als Zeichenklasse bezeichnet. Eine Aufzählung von einem oder mehreren Zeichen, die mit einem Zeichen übereinstimmen (1 von 0-9 oben).

-(Bindestrich) Zeigt den Zeichenbereich an. [A-C] ist einer von A, B, C und [0-9] ist einer von 0 bis 9.

^(/^xxx/) Der Anfang der Zeile. Entspricht dem Anfang der Zeichenfolge oder der Position unmittelbar nach dem Zeilenvorschubzeichen.

+ Repräsentiert eine oder mehrere Wiederholungen.

****(/xxx/) Das Ende der Linie. Stimmt mit dem Ende der Zeichenfolge oder kurz vor dem Zeilenvorschubzeichen überein.

Daher ist die Bedeutung der folgenden Beschreibung Dies bedeutet, dass "s eine Zeichenfolge ist, die aus allen Zeichen von 0 bis 9 besteht".

/^[0-9]+$/ === s

Schließlich

Das Obige ist eine Zusammenfassung der regulären Ausdrücke, die beim Lösen der ersten Frage (Doppelprüfung) des "1st Algorithm Practical Test" gelernt wurden. Ich denke, es ist wichtig, sich an reguläre Ausdrücke zu gewöhnen, indem man Probleme löst. In Situationen, in denen es brauchbar zu sein scheint, möchte ich es aktiv untersuchen und nutzen.

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

Recommended Posts

Ruby-Lernen mit AtCoder 8 [1. Algorithmus-Praxistest-Doppelprüfung] Regulärer Ausdruck
Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen
Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Ruby mit AtCoder 14 lernen [3. Algorithmus Praktischer Test Sprinkler] Hash-Erstellung, Schlüssel- / Wertschöpfung
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Ruby regulärer Ausdruck
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Extrahieren Sie eine Zeichenkette, die mit einem Großbuchstaben (Ruby) in Großbuchstaben beginnt.
Wie man ganze Zahlen mit Rubin überprüft
Ruby mit AtCoder lernen 11 So erhalten Sie häufig verwendete Standardeingaben