In der Sprache Nim sind die Regeln zur Unterscheidung von Bezeichnern etwas lockerer als in den meisten anderen Sprachen. Zwei Bezeichner sind äquivalent oder adressieren dieselbe Variable, wenn sie diesen Regeln folgen :
- Das erste Zeichen von beiden ist dasselbe (Groß- / Kleinschreibung beachten)
- beide Zeichenfolgen sind gleich (Groß- und Kleinschreibung beachten), nachdem alle Instanzen der Zeichen
-
und entfernt wurden_
Herausforderung
Schreiben Sie ein Programm / eine Funktion , die zwei Zeichenfolgen verwendet , die Nim-Bezeichner darstellen, und geben Sie einen Wahrheits- oder Falschwert aus, je nachdem, ob sie den obigen Regeln entsprechen oder nicht .
Spezifikationen
- Standard I / O - Regeln gelten .
- Standardlücken sind verboten .
- Die Zeichenfolgen enthalten nur ASCII-Ausdrucke . Sie müssen nicht überprüfen, ob es sich um eine gültige Kennung handelt.
- Die Zeichenfolgen können als zwei separate Eingaben, Liste der Zeichenfolgen usw. verwendet werden (Sie kennen den Drill).
- Leere Zeichenfolgen müssen nicht behandelt werden.
- Die Ausgabe muss konsistent sein für True- als auch für Falsey-Werte konsistent sein.
- Bei dieser Herausforderung geht es nicht darum, den kürzesten Ansatz in allen Sprachen zu finden, sondern darum, den kürzesten Ansatz in jeder Sprache zu finden .
- Ihr Code wird in Bytes bewertet , normalerweise in der Codierung UTF-8, sofern nicht anders angegeben.
- Integrierte Funktionen, die diese Aufgabe ausführen, sind zulässig, es wird jedoch empfohlen, eine Lösung zu verwenden, die nicht auf einer integrierten basiert.
- Erklärungen, auch für "praktische" Sprachen, sind erwünscht .
Testfälle
Input Output
count, Count falsey
lookMaNoSeparator, answer falsey
_test, test falsey
test, tset falsey
aVariableName, a_variable_name truthy
numbers_are_cool123, numbersAreCool123 truthy
symbolsAre_too>_>, symbols_areTOO>> truthy
Ungolfed-Referenzimplementierung
Dies ist in Nim selbst geschrieben.
import strutils, re
proc sameIdentifier(a, b: string): bool =
a[0] == b[0] and
a.replace(re"_|–", "").toLower == b.replace(re"_|–", "").toLower
f("test", "tset")
, da ich denke, dass eine Antwort ein unerwartetes Ergebnis liefert.
>
?
f("_test", "test")
.