Вызов
Учитывая две строки, определите, есть ли в них одинаковые символы.
пример
вход
слово
Это возвращается, true
потому что они одинаковы, но просто зашифрованы.
вход
слово, wwro
Это возвращается false
.
вход
лодка, тоба
Это возвращает true
правила
Вот правила!
- Предположим, ввод будет не менее 1 символа и не более 8 символов.
- Никаких специальных символов, только
a
-z
- Все входные данные могут быть приняты в нижнем регистре
Тестовые случаи
boat, boat = true
toab, boat = true
oabt, toab = true
a, aa = false
zzz, zzzzzzzz = false
zyyyzzzz, yyzzzzzy = true
sleepy, pyels = false
p,p = true
code-golf
string
permutations
Том Гуллен
источник
источник
Ответы:
Python, 32 байта
источник
def f(a,b):return sorted(a)==sorted(b)
компромисс в том, что вы можете заменить def + return лямбда-выражением в обмен на то, что вы не используете никаких утвержденийGolfscript, 3 символа?
использование:
источник
'
).J, 8
В буквальном смысле, match (
-:
) на (&
) сортировать (/:~
)Образец использования:
Где в игру вступают 64-битные целые числа?
источник
v arg
(монады), либо два с обеих сторон, как вarg1 v arg2
(диады). Тот, что я представил, очевидно, диада. Я не удосужился назвать его, так как он не был запрошен и таким образом короче. Если вы действительно хотите дать ему имя, вы должны сделать это следующим образом:is_anagram_of =: -:&(/:~)
а затем использовать как'a' is_anagram_of 'aa'
.Javascript,
192157152147125 байтХорошо, некоторые из этих языков намного более гибкие, чем я думал! В любом случае, это более длинный путь, но, по крайней мере, другой метод.
Сжатый
Спасибо Петру и Дэвиду за то, что они выдавили больше символов!
Затем сделайте:
Расширенный код
Сжатый имеет много изменений, но это основная теория:
источник
a=[2];for(p=3,j=0;j<26;)if(a[j]){if(p%a[j++]==0){p++;j=0}}else{a[j]=p;j=0}
for(a=[j=p=2];j<123;)a[j]?p%a[++j]<1&&p++&&(j=0):(a[j]=p,j=0);function b(c,i){return c[i=i||0]?a[c.charCodeAt(i)]*b(c,++i):1}
Golfscript, 8 байт
Это определяет функцию под названием
A
Контрольные примеры
источник
Haskell, 31 байт
функция - 31
программа -
815855Использование:
Престижность lambdabot и его pointfree рефакторинга .
источник
perl
требуется, все еще называться «программой»? :-)x#y=sort x==sort y
на 1 символ корочеC #, 129 символов
Удобочитаемый:
источник
using System.Linq;
вместо пространства имен?Рубин, 34 байта
Используя схему ввода-вывода решения Perl Питера Тейлорса:
источник
-e:1:in '<main>': undefined method 'chars' for nil:NilClass (NoMethodError)
С программа, 118
источник
t[256],i;main(c){for(;c+3;)(i=getchar())>10?t[i]+=c:(c-=2);for(i=257;--i&&!t[i-1];);puts(i?"false":"true");}
- это 108 символов. Очень важно, что вашc
прием инициализации все еще используется.Perl, 58 байт
(полная программа, в отличие от другого ответа Perl, который является только функцией)
49 как функция
источник
"
true и false, поскольку без использования строгих / предупреждений голое слово является строкой.($c,$d)=map{[sort split//]}@ARGV;exit("@$c"ne"@$d")
(51 символ), чтобы он мог принимать аргументы командной строки и использовать коды выхода командной строки. Это будет 48 символов<>
с многострочным вводом.Clojure - 23 символа
Как анонимная функция:
Пример тестового примера:
источник
JavaScript
Основано на решении @ zzzzBov.
Сравнение, 65 символов (40 без функции)
Компаратор, 43 символа
источник
+""
чтобы привести к строке.C ++ (104 символа без символов)
На основании подсчета сортировки. Примечание. Предполагается, что строки одинаковой длины, что, как представляется, подразумевается (хотя и не указано) в вопросе.
источник
i=123;while(i&&u[--i]);return!i;
PHP (командная строка, 87 символов)
источник
Javascript
(Очень) немного более короткая версия решения @ zzzzBov, которая использует
.join()
вместо строкового бокса:По аналогии:
источник
Clojure REPL 41 символ
источник
Ява
(очевидно, у всех любимый язык!)
173 символа:
(Не печатает символ новой строки, чтобы сохранить 2 символа из печати)
Скомпилируйте и запустите:
Люблю видеть короче ...
источник
java.util.Arrays x=null;
и использовавx.
вместоArrays.
:class g{public static void main(String[]p){java.util.Arrays x=null;String[]a=p[0].split(""),b=p[1].split("");x.sort(a);x.sort(b);System.out.print(x.equals(a,b));}}
( 163 байт ). И преобразовав его в Java 8,class g{public static void main
можно иinterface g{static void main
так, но я думаю, что Java 8 не еще не в 2011 году, так что держатьclass
тоже хорошо. ; pСед, 45 символов
Это даже возможно в моем любимом -
sed
! Только одно регулярное выражение для решения анаграммы ! Просто продолжайте удалять соответствующие буквы:(для вызова
-nE
)Perl, 48
Чтобы быть вызванным с
-p
.Perl-функция, 39
источник
APL, 2 символа
Это функция Multiset Match из Nars2000 , одной из передовых реализаций APL. Применительно к строкам он точно вычисляет требуемую функцию:
источник
⍦
символ, в чем я сомневаюсь.05AB1E ,
64 байта (не конкурирующие)Попробуйте онлайн!
Это заняло некоторое время из-за трудностей ввода. Гольф упал из-за поп.
Объяснение:
источник
Perl,
7775 символовПроблема ввода / вывода не очень хорошо определена; это читает две строки из стандартного ввода и выводит истину или ложь в стандартный вывод.
(Спасибо Тиму за 77 -> 75)
источник
$a=;
? Кроме того, вы можете пропустить символыsort
и место послеprint
.Perl, 62 байта
Эта функция принимает строки в качестве аргументов и возвращает true или false.
Сохраняет значения ASCII в массиве и проверяет, выравнивается ли он. Приращение для первого слова и уменьшение для второго слова.
источник
Python 3,
107977664Очевидно, что это может быть сокращено, если мы не принимаем буквально формулировку ОП и строчные буквы "правда" и "ложь" ...
источник
;s=sorted
к первой строке , а затем заменить два экземпляраsorted
сs
во второй строке. Должны сохранить ... 3 символа?Python, 32 байта
источник
Баш, 88 знаков
источник
R , 54 байта
Попробуйте онлайн!
источник
utf8ToInt
и его обратная тенденция приводит к более короткому расщеплению строки, чем обычные функции.Скала в REPL (32)
Функция Скала (43)
Скала программа (61)
Они используют удобную особенность Scala, благодаря которой строку также можно рассматривать как последовательность символов (
Seq
) со всемиSeq
доступными операциями .источник
APL - 13 символов
Звоните так:
В последнем примере
'a'
представляет один символ, и префикс,
преобразует его в строку.источник
Java (134 байта)
Это делает массив для подсчета количества раз, которое появляется каждая буква, а затем сравнивает массивы, чтобы проверить, равны ли они.
источник
(c[0], c[1])
иfor (int i=0;
.JavaScript, 41
Функция сравнения (41) :
Функция компаратора (21) :
Функция компаратора (48):
Функция сравнения (78):
Предполагает, что
String
имеетsplit
иArray
имеетsort
.источник
c=>d=>(a=b=>''+[...b].sort())(c)==a(d)