Nella lingua Nim , le regole per differenziare gli identificatori sono leggermente più rilassate rispetto alla maggior parte delle altre lingue. Due identificatori sono equivalenti o indirizzano la stessa variabile se seguono queste regole :
- il primo carattere di entrambi è lo stesso (case sensitive)
- entrambe le stringhe sono le stesse (caso in minuscole) dopo aver rimosso tutte le istanze dei personaggi
-e_
Sfida
Scrivi un programma / funzione che accetta due stringhe che rappresentano identificatori Nim e producono un valore di verità o falsità in base al fatto che siano o meno equivalenti alle regole sopra.
specificazioni
- Si applicano le regole I / O standard .
- Sono vietate le scappatoie standard .
- Le stringhe conterranno solo stampabili ASCII . Non è necessario verificare se si tratta di un identificatore valido.
- Le stringhe possono essere prese come due input separati, un elenco di stringhe, ecc. (Conosci il drill)
- Le stringhe vuote non devono essere gestite.
- L'output deve essere coerente per entrambi i valori di verità e falsità.
- Questa sfida non riguarda la ricerca dell'approccio più breve in tutte le lingue, ma piuttosto la ricerca dell'approccio più breve in ciascuna lingua .
- Il tuo codice verrà assegnato un punteggio in byte , di solito nella codifica UTF-8, se non diversamente specificato.
- Le funzioni integrate che eseguono questa attività sono consentite ma è incoraggiata l'inclusione di una soluzione che non si basa su un built-in.
- Le spiegazioni, anche per le lingue "pratiche", sono incoraggiate .
Casi test
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
Implementazione di riferimento non golfata
Questo è scritto in Nim, stesso.
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"), poiché penso che una risposta dia un risultato inaspettato.
>?
f("_test", "test").