В языке Nim правила различения идентификаторов немного более мягкие, чем в большинстве других языков. Два идентификатора эквивалентны или обращаются к одной и той же переменной, если они следуют этим правилам :
- первый символ обоих одинаков (с учетом регистра)
- обе строки одинаковы ( с учетом регистра) после удаления всех экземпляров символов
-
и_
Вызов
Напишите программу / функцию, которая принимает две строки, которые представляют идентификаторы Nim, и выводит истинное или ложное значение в зависимости от того, эквивалентны они или нет по приведенным выше правилам.
Характеристики
- Применяются стандартные правила ввода / вывода .
- Стандартные лазейки будут запрещены .
- Строки будут содержать только печатные формы ASCII . Вам не нужно проверять, является ли это действительным идентификатором.
- Строки могут быть взяты как два отдельных ввода, список строк и т. Д. (Вы знаете упражнение)
- Пустые строки не нужно обрабатывать.
- Выходные данные должны быть согласованы как для истинных, так и для ложных значений.
- Эта задача заключается не в том, чтобы найти кратчайший подход на всех языках, а в том, чтобы найти кратчайший подход на каждом языке .
- Ваш код будет оцениваться в байтах , обычно в кодировке UTF-8, если не указано иное.
- Разрешены встроенные функции, которые выполняют эту задачу, но приветствуется решение, которое не зависит от встроенного.
- Пояснения, даже для «практических» языков, приветствуются .
Контрольные примеры
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
Неразвитая эталонная реализация
Это написано в самой Nim.
import strutils, re
proc sameIdentifier(a, b: string): bool =
a[0] == b[0] and
a.replace(re"_|–", "").toLower == b.replace(re"_|–", "").toLower
code-golf
string
decision-problem
totallyhuman
источник
источник
f("_test", "test")
.f("test", "tset")
, так как я думаю, что один ответ дает неожиданный результат для него.>
?Ответы:
JavaScript (ES6),
6261 байтСохранено 1 байт благодаря @JohanKarlsson
Принимает ввод в синтаксисе карри
(a)(b)
. Возвращает логическое значение.Контрольные примеры
Показать фрагмент кода
источник
/-|_/g
сохраняет байтPython 3 , 76 байт
Попробуйте онлайн!
-1 байт благодаря notjagan
-3 байт благодаря Wheat Wizard
источник
На самом деле 15 байтов
Попробуйте онлайн!
Интересный факт: это работает с любым количеством входов (оно всегда возвращает true для менее чем 2 входов).
Объяснение:
источник
Pyth , 13 байт
Попробуйте онлайн!
объяснение
источник
05AB1E , 12 байтов
Попробуйте онлайн!
-1 спасибо Аднану .
Теоретически,
εćs„-_-«}Ë
должно было работать на 10 байт, но, к сожалению, это поведение пока не рекомендуется.источник
„-_SK
вместо'-K'_K
.SK
нам
.м
существовало тогда. : PЖеле , 11 байт
Попробуйте онлайн!
-2 байта благодаря Эрику Аутгольферу
-1 байту благодаря Джонатану Аллану
источник
["symbolsAre_too>_>", "symbols_areTOO>>"]
и используйтеḢ;ḟ⁾-_Œl$µ€E
вместо -2. Побей этого Пифта!ḟ⁾-_Œl,Ḣµ€E
на 11 байтов.Рубин ,
8664636151 байтПопробуйте онлайн!
Это
чувствует себя действительно долго,все еще чувствует себя немного длинным. Я был бы признателен за помощь любого гуру из Ruby, который сделал это хотя бы немного короче.источник
.delete("_-")
корочеf[x]
всегда является допустимой заменой,f.call(x)
когда речь идет о лямбда-пота.С ++,
288248 байт-5 байт благодаря Захари
Спасибо вам, препроцессор. Кроме того, этот код использует тот факт, что в C ++ правило приведения int к bool
int_var!=0
источник
;
после определенияF
. Затем измените первоеreturn
утверждение наreturn 0;E(a,45)E(b,45)E(a,95)E(b,95)F(a)F(b)
.CJam, 20 байтов
Принимает ввод в виде ["string1", "string2"].
Попробуйте онлайн (тестовая версия)
источник
Хаскелл ,
8578767168 байт2 байта сохранены благодаря Эрджану Йохансену
Попробуйте онлайн!
Ошибки в пустой строке.
источник
all(/=a)"-_"
, Также после вашего последнего редактирования,f
должен стать оператором.notElem
но я не мог вспомнить это на всю жизнь.Python 2 , 72 байта
Попробуйте онлайн!
Не будет работать с Python 3 из-за нового
translate
синтаксиса.источник
Excel, 105 байт
CODE () возвращает числовой код первого символа.
Сравнение строк в Excel не чувствительно к регистру.
источник
Шелуха , 13 байт
Попробуйте онлайн!
Создает для каждой строки пару, состоящую из первого символа строки и всей строки в нижнем регистре, и все вхождения - / _ удаляются. Затем проверяет, равны ли две пары.
Особенностью является то, что
-
в Husk установлена разность (то есть удаляется только первое найденное вхождение): чтобы удалить все вхождения,-"-_
найдена фиксированная точка сω-"-_
.источник
Japt ,
1425 байтПроверяет равенство строк без учета регистра, удаляя все символы в слове 2 из слова 1 и удаляя-_
символы; это приводит к пустой строке (""
), если слова равны.Спасибо Орджану Йохансену за указание на проблему с этим.
Проверяет равенство первого символа и совпадают ли входные данные в верхнем регистре после удаления
_-
.Попробуйте онлайн!
объяснение
Неявный ввод:
U
иV
являются входными строкамиПроверьте,
U
равна ли первая буква (неявного) (¥
) первому символуV
.И (
©
) проверяетU
, одинаковы ли в верхнем регистре (u
) и с_-
удаленным (k
), равно (¥
)V
. Неявно вернуть логический результат.источник
test
противtset
?Python 2 ,
7973 байта-6 байт благодаря @notjagan: проверьте, что длина набора всех сокращенных имен равна 1 или нет.
Попробуйте онлайн!
источник
Perl 5 , 67 байт
Попробуйте онлайн!
Принимает идентификаторы как ввод в отдельных строках.
Объяснение:
источник
Сетчатка , 28 байт
Попробуйте онлайн!
источник
Древесный уголь , 29 байт
Попробуйте онлайн!
Это печатает
-
для правды и ничего для фальси.Ссылка на подробную версию . Сначала он сравнивает первый символ обеих входных строк (
⁼§θ⁰§η⁰
), а затем сравнивает оставшиеся обе строки после удаления символов подчеркивания и дефисов (⪫⪪⪫⪪θ_ω-ω
) и преобразования в нижний регистр (↧
).источник
C #,
10189 байтСохранено 12 байтов благодаря @ kusi581.
источник
string.Concat(...)
вы можете сохранить 2 байта;)Java (OpenJDK 8) , 95 байт
Попробуйте онлайн! Довольно прямо вперед.
источник
Пайк , 13 байт
Попробуйте онлайн!
источник
C (gcc) ,
126114 байтовПопробуйте онлайн!
С пробелами и комментариями:
источник
while
тест можно сократить до*s%50==45
. (2) Однако, lowercasing неправильно, например , он не будет работать наt~
VS.t^
.>
был добавлен этот пример с , хм.-
самом деле это не разрешено, но алгоритм все еще включает его ...-
что в грамматическом описании идентификатора нет, но другие части этого документа подразумевают, что это разрешено.Дьялог АПЛ,
473228272622 байта-4 байта благодаря Kritixi Lithos
Принимает ввод как список строк.
Попробуйте онлайн!
Как?
источник
⊃⍺=⍵
вместо⍺[1]=⍵[1]
⊃⍵
вместо⍵[1]
должен работать⊃⍺=⊃⍵
вместо⍺[1]=⍵[1]
Common Lisp, 98 байт
Попробуйте онлайн!
Ungolfed (супер просто!) Версия:
источник
R , 76 байт
Анонимная функция, которая принимает входные данные как список из двух строк. Использует тот факт, что строковые операции R, хотя и довольно длинные в # символов, векторизованы. Кроме того, завершение присваивания в скобках приведет к привязке переменной, поэтому
(g=substr(l,1,1))
переменная будет сохранена для последующего повторного использования в строке и аналогичным образомh
.R возвращает последнее вычисленное выражение как вывод функции.
Ungolfed:
Попробуйте онлайн! (все тестовые случаи)
источник
Брахилог , 17 байт
Попробуйте онлайн!
Выходы через предикат успеха / неудачи.
источник
Erlang 113 байт
пара анонимных функций, которые сравнивают два списка. предназначен для вставки в оболочку эрланга.
more readable:
источник
Clip, 25 bytes
Explanation:
x
,y
andz
may be referenced in a Clip program to implicitly take up to three inputs. Since this program only referencesx
andy
, it takes two inputs which are assigned tox
andy
.Takes two strings from standard input, outputs
1
and0
for true and false respectively.источник