В PPCG стало традицией, что некоторые пользователи временно меняют свои имена анаграммой (новое имя формируется путем изменения порядка букв старых).
Иногда бывает сложно выяснить, кто есть кто. Я мог бы использовать программу или функцию, чтобы сказать, являются ли две фразы анаграммами друг друга.
Соревнование
Программа или функция должны принимать две строки и давать достоверный результат, если они являются анаграммами друг друга, и ложно в противном случае.
правила
- Входные данные будут содержать только буквы (ASCII 65–90 и 97–122), цифры (ASCII 48–57) или пробел (ASCII 32).
- Отношение анаграммы не зависит от регистра. Таким образом, «рука» и «RAM» являются анаграммами.
- Пробелы тоже не в счет. Таким образом, «клавиатура» и «Лай Йо» анаграммы
- Все встроенные разрешены
- Формат ввода гибкий (две строки, массив из двух строк, строка, содержащая обе фразы с подходящим разделителем ...)
Код гольф. Побеждает несколько байтов.
Контрольные примеры
Truthy:
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
Falsy
Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got
code-golf
string
decision-problem
permutations
Луис Мендо
источник
источник
Manage Trash So, Those anagrams
, Ницца.So, the anagrams...
Ответы:
05AB1E ,
98 байтКод:
Объяснение:
Попробуйте онлайн!
источник
lvyðK{}Q
сейчас.Сетчатка, 25
Попробуйте онлайн! Кроме того, вы можете запустить измененную многострочную версию .
Удалите буквы до запятой и их совпадения после запятой. Если у нас не осталось букв, то это была анаграмма.
источник
\w
в качестве последнего этапа.\W
не будет работать в случае:Calvins Hobbies, Calvin's Hobbies
Pyth,
1110 байтСпасибо @FryAmTheEggman за то, что научил меня силе
;
!Попробуй это здесь!
Принимает список из двух строк в качестве входных данных.
объяснение
источник
Python 2,
6361 байтАнонимная функция, которая фактически принимает n аргументов и определяет, являются ли все n из них взаимными палиндромами!
f("Lynn", "Nyl N")
возвращаетсяTrue
.Этот трюк с пониманием поставлен Xnor. Это сэкономило два байта, но старый подход выглядел очень аккуратно:
источник
`sorted(input().lower())`.strip(" [',")
такой же длины: /exec
Вещь умна , но кажется слишком сложным. Вы можете сделать лучше сlambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
.Желе, 12 байт
Попробуйте онлайн!
Как это работает
Альтернативная версия, не конкурирующая (9 байт)
В верхнем регистре атома Jelly была ошибка, а у Jelly до сих пор не было встроенного для проверки списков на равенство ...
Попробуйте онлайн!
Как это работает
источник
CJam, 11
1214байтов3
2байта удалены благодаря @FryAmTheEggmanПопробуйте онлайн!
источник
lel
,lel
==>1e1
Никто не знает. Это загадкаJavascript,
69616059 байтСпасибо за 1 байт @ ӍѲꝆΛҐӍΛПҒЦꝆ . 1 байт прочь с выделки ( указывал на @apsillers )
Показать фрагмент кода
источник
n=>m=>...
n=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)
. Использование split вместо match должно сэкономить вам байт.s='db cz'
... Теперь результаты ... и результатыs.match(/\S/g)
.sort()
['b','c','d','z']
s.split(/\s/).sort()
['cz','db']
MATL , 11 байт
РЕДАКТИРОВАТЬ (20 мая 2016 г.) Код в ссылке используется
Xz
вместоXv
, в связи с недавними изменениями в языке.Попробуйте онлайн!
источник
Шутки в сторону,
119 байтПопробуйте онлайн!
Кажется, все используют один и тот же алгоритм. Здесь это еще раз.
Редактировать: реализованная сортировка работает правильно на строках и сортирует пробелы вперед, так что будет работать strip ().
источник
C 165 байт
Читаемый и в рабочем контексте,
источник
зш, 85 байт
Ввод в качестве аргументов командной строки, вывод в виде кода возврата.
for
Синтаксис делает Bash-несовместимыми.источник
Japt, 12 байт
Проверьте это онлайн!
Как это работает
источник
GNU Sed, 33
Оценка включает в себя +2 для
-rn
вариантов для sed.Это почти прямой порт ответа Retina от @ FryAmTheEggman :
Ideone.
источник
Perl,
3433 + 1 = 34 байтаТребуется
-n
флаг и свободный-M5.010
|-E
:Как это работает:
Спасибо msh210 за предложение использовать троичные операторы для сохранения одного байта
источник
Белудж Гыр , 9 байт
Попробуйте онлайн!
Выход «истина / ложь» достигается через предикат успеха / неудачи, это Брахилог.
Ранее сохранял байты, используя
cṇ₁cḷḍ
вместо того,{ṇ₁cḷ}ᵐ
чтобы предполагать, что две входные строки будут одинаковой длины минус пробел, но я понял, что это будет успешно, где он должен произойти сбойAh Hass, haha
.источник
PHP,
10994 байтаBlech, эти двое
function/return
убивают меня здесь.Возвращает разницу между двумя
string
входами в видеarray
символов. PHP считает[]
фальшивкой, удовлетворяющейreturn
требованиям.источник
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}
-> 75 байт. Создает анонимную функцию, которая возвращает результат. Я удалил эту длинную функцию и заменил вызовыstr_split
назначенной переменной, чтобы сократить ее.Утилиты Bash + GNU, 51
f()
которая:${@^^}
преобразует все параметры в верхний регистрfold -1
разбивает символы - по одному на строкуsort
линииdiff
с,-q
чтобы подавить полный вывод различий и-Bw
игнорировать изменения пробеловисточник
Пайк (коммит 30, неконкурентный), 9 байт
Объяснение:
источник
Mathematica,
7776 байтовПервая часть на самом деле является одним из моих ответов на другой вопрос!
источник
Щука,
5411210910996 байтmixed
бывает корочеarray(string)
.s
возвращает,1
если его аргументы анаграммы.источник
Q, 25 байт
ПРИМЕЧАНИЕ. - Подсчет включает имя функции f: для облегчения тестов (в качестве лямбды мы можем уменьшить 2 байта)
Читаемая версия
совпадать по {возрастанию, но не нулю x ниже каждого x
Тест
генерирует (1b = истина, 0b = ложь)
О Q
Язык общего назначения (производная APL, специализируется на обработке данных), разработанный kx.com. Бесплатная полнофункциональная ознакомительная версия для Windows / Linux / MacOS.
источник
f
для правильной оценки кода требуется, то он должен быть посчитан. В противном случае, просто оставьте его в коде отправки и используйте его только в примерах, чтобы показать, как назначить функцию.k)~/{x@<x:_x@&~^x}'
для 17 байтов ... но я бы сказал, что это 19, так как вам нужнаk)
скобка, так как этоK
код, а неQ
...APL, 31 символ
Быть использованным так:
По-английски:
{ ... }¨⍵
: для каждого из двух элементов аргументаx←('.'⎕R'\u0')⍵~' '
: преобразовать в верхний регистр (используя регулярное выражение ...) строку без пробелов и назначить временный результатx
x[⍋x]
: сортировать х≡/
: сравнить два результата сортировки: если они совпадают, вернуть 1.источник
f 'first avatar' 'second avatar'
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'
дает 1.Java, 218 байт
Впервые я написал Java ...
Golfed:
Ungolfed:
Тестирование:
источник
boolean f(String...a){java.util.Arrays x=null;String[]A=g(a[0]),B=g(a[1]);x.sort(A);x.sort(B);return x.equals(A,B);}String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 186 байтов ) Или, если вы конвертируете его в лямбду Java 8, это может быть:a->b->{java.util.Arrays x=null;String[]A=g(a),B=g(b);x.sort(A);x.sort(B);return x.equals(A,B);};String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 167 байтов ). Вот TIO с тестовым кодом.Japt , 10 байт
Попытайся
источник
Рубин, 50 байтов
Писать
f=->{...}
иf[]==f[]
так же долго. :(источник
PowerShell, 81 байт
Небольшое переписывание моего ответа на связанный вызов Anagram.
Принимает ввод как char-массивы, выполняет
-replace
операцию по удалению пробелов,sort
сортирует их по алфавиту, а не по значению ASCII, а затем-join
возвращает их обратно в строку. В-eq
PowerShell по умолчанию регистр не учитывается, но здесь он должен выполняться для строк, что[char]'a'
не равно[char]'A'
, следовательно, причина-join
.источник
Perl, 35 байт
Включить +1 для
-p
Несколько оскорбительно, так как это зависит от программы, заданной в командной строке.
Затем укажите строки в виде 2 последовательных строк на STDIN.
Очень оскорбительное решение - 30 байт:
Это происходит сбой, если строки не являются анаграммами и, следовательно, дает ложный код выхода с точки зрения оболочки. Это также дает мусор на STDERR для этого случая. Если строки анаграммы, программа молчит и выдает «истинный» код выхода
источник
PHP , 89 байт
Попробуйте онлайн!
PHP , 94 байта
Попробуйте онлайн!
источник
Excel VBA, 122 байта
Anonymous VBE немедленное окно Функция, которая берет входные данные из диапазона
[A1:B1]
и выводит в непосредственное окно VBEисточник
C #, 378 байт
Мне нужен гандикап!
https://dotnetfiddle.net/FNDt0E
источник
#
в первую строку. Также для вопросов по коду-гольфу необходимо сыграть в гольф в вашей программе. Для начала вы должны удалить ненужные пробелы и использовать односимвольные имена переменных. Также вы всегда можете использовать функцию вместо полной программы (если это явно не запрещено), чтобы сохранить еще несколько байтов.