No idioma Nim , as regras para diferenciar identificadores são um pouco mais relaxadas do que na maioria dos outros idiomas. Dois identificadores são equivalentes ou endereçam a mesma variável se seguirem estas regras :
- o primeiro caractere de ambos é o mesmo (diferencia maiúsculas de minúsculas)
- tanto cadeias são os mesmos (caso em minúsculas) após a remoção de todas as ocorrências dos caracteres
-
e_
Desafio
Escreva um programa / função que use duas cadeias que representam os identificadores Nim e produza um valor de verdade ou falsey com base no fato de serem equivalentes ou não pelas regras acima.
Especificações
- Aplicam- se as regras de E / S padrão .
- As brechas padrão são proibidas .
- As seqüências conterão apenas imprimíveis ASCII . Você não precisa verificar se é um identificador válido.
- As seqüências de caracteres podem ser tomadas como duas entradas separadas, lista de seqüências de caracteres etc. (você conhece a broca)
- Cadeias de caracteres vazias não precisam ser manipuladas.
- A saída deve ser consistente para os valores de verdade e falsey.
- Esse desafio não é encontrar a abordagem mais curta em todos os idiomas, mas sim encontrar a abordagem mais curta em cada idioma .
- Seu código será pontuado em bytes , geralmente na codificação UTF-8, a menos que especificado de outra forma.
- Funções internas que executam essa tarefa são permitidas, mas é recomendável incluir uma solução que não dependa de uma incorporada.
- Explicações, mesmo para idiomas "práticos", são incentivadas .
Casos de teste
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
Implementação de referência ungolfed
Isso está escrito em Nim, em si.
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")
, pois acho que uma resposta fornece um resultado inesperado.
>
?
f("_test", "test")
.