Gute Schlüssel

WBOY
Freigeben: 2024-08-19 16:34:50
Original
837 Leute haben es durchsucht

Good keys

Wöchentliche Herausforderung 282

Jede Woche verschickt Mohammad S. Anwar die Weekly Challenge, eine Chance für uns alle, Lösungen für zwei wöchentliche Aufgaben zu finden. Meine Lösungen werden zunächst in Python geschrieben und dann in Perl konvertiert. Es ist eine großartige Möglichkeit für uns alle, etwas Programmieren zu üben.

Herausforderung, meine Lösungen

Aufgabe 1: Gute Ganzzahl

Aufgabe

Sie erhalten eine positive Ganzzahl, $int, mit 3 oder mehr Ziffern.

Schreiben Sie ein Skript, um die gute Ganzzahl in der angegebenen Ganzzahl oder -1 zurückzugeben, wenn keine gefunden wird. Eine gute Ganzzahl besteht aus genau drei aufeinanderfolgenden übereinstimmenden Ziffern.

Meine Lösung

Ich dachte ursprünglich, dass diese Aufgabe mit einem regulären Ausdrucksmuster erledigt werden könnte, aber anscheinend habe ich mich geirrt. Ich werde mir andere TPW-Mitglieder ansehen, um zu sehen, ob sie das auch so machen können.

Für diese Aufgabe habe ich eine Variable pos, die von 0 auf drei weniger als die Länge der Zeichenfolge iteriert. Ich überprüfe dann vier Dinge:

  1. Die Ziffer an der aktuellen Position ist dieselbe wie die an der nächsten Position.
  2. Die Ziffer an der aktuellen Position ist dieselbe wie die an der übernächsten Position.
  3. Die Position ist 0 (was bedeutet, dass es keine Ziffern vor der aktuellen gibt) oder die vorherige Ziffer ist nicht dieselbe wie die aktuelle Ziffer.
  4. Die Position ist 3 kleiner als die Länge (d. h. es gibt keine Ziffer nach den aktuellen drei Ziffern) oder die drittnächste Ziffer stimmt nicht mit der aktuellen Ziffer überein.

Wenn das alles wahr ist, gebe ich diese drei Ziffern zurück. Dies erfolgt in Python als String, da „000“ keine echte Ganzzahl ist. Wenn der Iterator erschöpft ist, gebe ich -1.
zurück

def good_integer(n: int) -> str: value = str(n) length = len(value) for pos in range(length-2): if ( value[pos] == value[pos+1] and value[pos] == value[pos+2] and (pos == 0 or value[pos] != value[pos-1]) and (pos + 3 == length or value[pos] != value[pos+3]) ): return value[pos:pos+3] return '-1'
Nach dem Login kopieren

Beispiele

$ ./ch-1.py 12344456 444 $ ./ch-1.py 1233334 -1 $ ./ch-1.py 10020003 000
Nach dem Login kopieren

Aufgabe 2: Schlüssel ändern

Aufgabe

Sie erhalten eine alphabetische Zeichenfolge, $str, wie vom Benutzer eingegeben.

Schreiben Sie ein Skript, um herauszufinden, wie oft der Benutzer die Taste ändern musste, um die angegebene Zeichenfolge einzugeben. Beim Ändern des Schlüssels handelt es sich um die Verwendung eines Schlüssels, der sich vom zuletzt verwendeten Schlüssel unterscheidet. Die Tasten „Shift“ und „Caps Lock“ werden nicht gezählt.

Meine Lösung

Lustige Tatsache. Wenn ich mir eine neue Tastatur kaufe (alle paar Jahre), merke ich, wie lange es dauert, bis ich die Feststelltaste herausreiße. Die meisten Tastaturen halten keinen Tag!

Für diese Aufgabe wandle ich die Zeichenfolge in Kleinbuchstaben um und beginne mit zwei Variablen. Der Wert „current_key“ ist die aktuell gedrückte Taste und wird mit dem ersten Buchstaben unserer Eingabe initialisiert. Die Variable „Änderungen“ gibt die Anzahl der Schlüsseländerungen an, die ich vornehme, und beginnt mit 0,

Ich durchlaufe dann jeden Buchstaben in der Eingabezeichenfolge. Wenn sich dieser Buchstabe vom aktuellen_Schlüssel unterscheidet, aktualisiere ich ihn mit dem neuen Buchstaben und erhöhe die Änderungen um 1,

def key_changes(s: str) -> int: s = s.lower() current_key = s[0] changes = 0 for letter in s: if letter != current_key: current_key = letter changes += 1 return changes
Nach dem Login kopieren

Beispiele

$ ./ch-2.py pPeERrLl 3 $ ./ch-2.py rRr 0 $ ./ch-2.py GoO 1
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGute Schlüssel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!