En el lenguaje Nim , las reglas para diferenciar los identificadores son un poco más relajadas que la mayoría de los otros idiomas. Dos identificadores son equivalentes o abordan la misma variable si siguen estas reglas :
- el primer caracter de ambos es el mismo (mayúsculas y minúsculas)
- ambas cadenas son iguales (mayúsculas y minúsculas) después de eliminar todas las instancias de los caracteres
-y_
Desafío
Escriba un programa / función que tome dos cadenas que representen identificadores Nim y genere un valor verdadero o falso en función de si son equivalentes o no según las reglas anteriores.
Especificaciones
- Normas estándar de E / S se aplican .
- Las lagunas estándar están prohibidas .
- Las cadenas solo contendrán imprimibles ASCII . Usted no necesita comprobar si es un identificador válido.
- Las cadenas se pueden tomar como dos entradas separadas, una lista de cadenas, etc. (conoce el ejercicio)
- Las cadenas vacías no necesitan ser manejadas.
- El resultado debe ser coherente tanto para los valores de verdad como para los de falsey.
- Este desafío no se trata de encontrar el enfoque más corto en todos los idiomas, sino de encontrar el enfoque más corto en cada idioma .
- Su código se puntuará en bytes , generalmente en la codificación UTF-8, a menos que se especifique lo contrario.
- Se permiten las funciones integradas que realizan esta tarea, pero se recomienda incluir una solución que no se base en una función integrada.
- Se alientan las explicaciones, incluso para los idiomas "prácticos" .
Casos de prueba
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
Implementación de referencia sin golf
Esto está escrito en Nim, en sí mismo.
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"), ya que creo que una respuesta da un resultado inesperado.
>?
f("_test", "test").