Вызов :
По заданному слову проверьте, является ли это изограммой.
Какая :
Изограмма - это слово, состоящее только из букв без дубликатов (без учета регистра). Пустая строка является изограммой.
Примеры :
"Dermatoglyphics" ---> true
"ab" ---> true
"aba" ---> false
"moOse" ---> false
"abc1" ---> false
"" ---> true
Вход:
Вы можете принять ввод в любом разумном формате
Ввод будет содержать только буквы и / или цифры, без пробелов ( [a-zA-Z0-9]
)
Выход :
true
или любое истинное значение, если вход является изограммойfalse
или любое ложное значение в противном случае
Это код-гольф, поэтому выигрывает самый короткий код в байтах на каждом языке.
code-golf
string
decision-problem
Мухаммед Салман
источник
источник
sad2
sad2das
получится даже без,2
так что ничего не показывает).Ответы:
Python
2/3,365248 байтПопробуйте онлайн!
Я пользуюсь тем, что
set
содержит только уникальные элементы. Вызывая__len__
метод каждого из них, я могу определить,s
содержит ли он также только уникальные элементы (без учета регистра).РЕДАКТИРОВАТЬ: Обновлено, чтобы удовлетворить ранее пропущенное требование возвращать False для числовых входов. Набор всех цифр кодируется как
set(str(56**7))
.РЕДАКТИРОВАТЬ 2: После этого предложения пользователя , я теперь пользуюсь распаковкой аргументов, чтобы установить понимание. Это формально нарушает совместимость с Python 2.
источник
false
когдаs
содержит символ цифры.`56**7`
(как в другом ответе Python) вместоstr()
короче? Я не знаком с Python, но это, кажется, главное различие между вашими двумя ответами.``
, версия только для python2 сэкономила бы 4 байта (3 при этом + 1 при делении вместо равных)56**7
был вдохновлен вашей собственной кодировкой цифр 0-9 ниже, но экономит на вас на 1 байт.lambda s:len(s)==len(set(s.lower())-{`56**7`})
05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник
R , 41 байт
Попробуйте онлайн!
Подход Regex.
!grepl(regex,scan(,""),F)
не сработало, так что я думаю, что захват не соответствует регистронезависимому в R? Я вообще плохо отношусь к регулярным выражениям, поэтому я не удивлюсь, если я просто делаю это неправильно ...R , 58 байт
Попробуйте онлайн!
Добавляет цифры
0:9
в (нижний регистр) список символов и проверяет наличие дубликатов.источник
Рубин ,
25 2321 байт-2 байта на обоих благодаря Джузеппе
Попробуйте онлайн!
-2 байта благодаря Кириллу Л.
Рубин
-n
,21 19 1816 байтПопробуйте онлайн!
источник
$_
- просто добавление регулярного выражения без чего-либо еще неявно сопоставляет его с$_
: 16 байтов!/.../
раньше не видел , даже не могу найти его на ruby-doc.orgБрахилог , 4 байта
Попробуйте онлайн!
Предикат будет успешным, если вход является изограммой, и потерпит неудачу, если это не так, и выдает строчный латинский алфавит, если он успешен Так как
⊆
встроенный предикат Brachylog не совсем соответствует обычным отношениям между подмножеством и надмножеством, мне пришлось потратить байт на сортировку входных данных в нижнем регистре, но сэкономил байт на том, что нет необходимости явно проверять наличие дубликатов в нем. (Если это не нужно с ошибками с числами, мы могли бы просто использоватьḷ≠
.)источник
Шелуха , 6 байт
Попробуйте онлайн!
объяснение
источник
Japt , 12 байт
Объяснение:
Попробуй это здесь.
источник
MATL, 9 bytes
Try it online!
источник
Python 3, 46 bytes
Try it online!
источник
Japt 2.0,
1211 bytes-1 byte thanks to Nit
Test it online!
источник
e
JavaScript (Node.js),
2925 bytesTry it online!
Thanks for the update on answer to @BMO , @l4m2 , @KevinCruijssen
-4 bytes thanks to @KevinCruijssen
источник
s=>!/(.).*\1|[^a-z]/i.test(s)
?[^a-z]
can be replaced with\d
Retina, 16 bytes
Returns
1
as Truthy and0
as Falsey values.Thanks @Neil for discovering and fixing a bug in my initial code.
Try it online.
Explanation:
источник
PowerShell, 91 bytes
Try it online!
Naive solution, but I can't come up with a better algorithm. Takes input
$b
, converts itToUpper
case, casts it as achar
-array. Pipes that array intoGroup-Object
which constructs a object that has name/count pairs for each input letter. We thensort
that based on thec
ount and take the0
th one thereof. We check that its.Count
is-eq
ual to the.Count
of the last[-1]
pair. If so, then the counts are all equal, otherwise we have a different amount of letters.We then
-and
that with checking whether the input-notmatch
es against\d
to rule out any digits in the input. That Boolean result is left on the pipeline and output is implicit.источник
Jelly, 8 bytes
Try it online!
источник
Python 2 ,
5756 байтПопробуйте онлайн!
Сначала он поворачивается, затем вводится в набор, удаляя дубликаты, затем удаляет цифры (закодированные в
`763**4`
), а затем проверяет, совпадает ли длина с исходным вводом.источник
Java 8,
6139 байтОбъяснение:
Попробуйте онлайн.
Regex объяснение:
String#matches
неявно добавляет^...$
.источник
APL (Dyalog Unicode) , 12 байт
Анонимная молчаливая функция.
Попробуйте онлайн!
819⌶
в нижнем регистре(
…)
Примените к этому следующую молчаливую функцию:~∘⎕D
удалить D igits от аргумента∪≡
уникальные элементы аргумента идентичны этому?источник
Perl 6 , 22 байта
Попробуйте онлайн!
Нет совпадений для какого-либо персонажа, затем того же персонажа. Неявная функция как блок кода, неявно совпадает с $ _, инвертирует книгу с
!
. Добавлено|\d
(та Адам), но также необходимо.uc~~
, что необходимо скобки ...Альтернатива с сумками, 23 байта
Попробуйте онлайн!
Этот случай нормализует, а затем делает мешок (набор с подсчетом случаев). Подмножество или равно только истина, если все участники являются членами Мешка сравнения, и все показатели заболеваемости меньше или равны количеству в Мешке сравнения. Таким образом, любые повторения или цифры сделают сравнение ложным.
источник
abc1
.|\d
?Swift , 81 байт
Попробуйте онлайн!
источник
Visual Basic для приложений (32 бита), 102 байта
Используется тот факт, что в VBA
0^x
выдает 1, если x равен нулю, и 0 в противном случае. Запустить в немедленном (отладочном) окне.Редактировать: как отметил Тейлор в комментариях, это работает только в 32-битных установках MS Office.
источник
s=LCase([A1]):j=1:For i=1To Len(s):k=Mid(s,i,1):j=j*0^InStr(i+1,s,k)*(k Like"[a-z]"):Next:?j<>0
на 95 байтов, приняв входные данные из[A1]
. Кроме того, стоит отметить, что из-за того, что Exponentiation в VBA странно , это решение ограничено 32-разрядной установкой Office.<!-- language-all: lang-vb -->
к ответу флажок, чтобы добавить подсветку синтаксиса05AB1E , 4 байта
Попробуйте онлайн!
объяснение
источник
The input will only contain letters and/or numbers, no spaces ([a-zA-Z0-9])
C (gcc),
878583 bytestwofour bytes thanks to ceilingcat.Try it online!
источник
К (нгн / к), 18 bytes
Попробуйте онлайн!
источник
CJam , 11 байт
Try it online!
Explanation
Основная идея состоит в том, чтобы добавить каждую цифру, а затем проверить на наличие дубликатов. Поскольку добавление гарантирует, что каждая цифра уже присутствует один раз, любое дальнейшее присутствие цифр будет дубликатом, в результате чего он будет возвращать false.
источник
Красный , 76 байт
Попробуйте онлайн!
источник
Smalltalk, 57 байт
Метод, который будет определен в классе String:
Это, скорее всего, говорит само за себя.
источник
Pyth , 17 байт
Тестирование
Объяснение: Перевод Python 3:источник
C #, 82 байта
редактировать: добавлен тест для символа
редактировать: используя GroupBy, чтобы сократить его на 5 байт
источник
APL (Dyalog Unicode) ,
252022 байтаПопробуйте онлайн!
Возвращает 1 для истины, иначе 0.
Сохранено 5 байтов благодаря @ H.PWiz
Исправлено и сохранено еще один байт благодаря @ Adám
Как?
источник
abc1
.\w
→.
действителен?(.).*\1
, нет. Это также не помогаетabc1
: /abc1
, когда он должен возвращать 0.Tcl , 114 байт
Попробуйте онлайн!
Tcl , 121 байт
Попробуйте онлайн!
Все еще слишком долго, на мой вкус!
источник