| Bytes | Lang | Time | Link |
|---|---|---|---|
| 011 | Uiua | 241021T211236Z | nyxbird |
| 009 | Japt | 170927T141738Z | Shaggy |
| 008 | Cyborg Hal | 190302T034539Z | Unrelate |
| 033 | Arturo | 230816T104945Z | chunes |
| 005 | Thunno 2 | 230816T093414Z | The Thon |
| 051 | Zsh | 221123T110451Z | roblogic |
| 005 | lyxaV | 221123T114630Z | lyxal |
| 012 | Jelly | 160225T175654Z | Dennis |
| 122 | Excel VBA | 170926T222515Z | Taylor R |
| 089 | PHP | 170623T162549Z | Jör |
| 218 | Java | 161109T223516Z | Pete Ard |
| 117 | D | 160227T192424Z | cat |
| 031 | APL | 160628T114357Z | lstefano |
| 025 | Q | 160521T071359Z | J. Sendr |
| 011 | MATL | 160225T162039Z | Luis Men |
| 068 | Factor | 160330T135055Z | cat |
| 096 | Pike | 160225T212541Z | cat |
| 008 | 05AB1E | 160225T162526Z | Adnan |
| nan | Perl | 160226T115704Z | Andreas |
| 076 | Mathematica | 160225T203134Z | Calculat |
| 378 | C# | 160228T003540Z | Chris Ha |
| 059 | Javascript | 160225T162856Z | removed |
| 035 | Perl | 160227T102051Z | Ton Hosp |
| nan | 160226T143941Z | tucuxi | |
| 033 | GNU Sed | 160225T175041Z | Digital |
| 009 | Pyke commit 30 | 160225T173004Z | Blue |
| 025 | Retina | 160225T171316Z | FryAmThe |
| 051 | Bash + GNU utilities | 160225T170806Z | Digital |
| 081 | PowerShell | 160225T171920Z | AdmBorkB |
| 009 | Seriously | 160225T163639Z | quintopi |
| 050 | Ruby | 160225T170750Z | lynn |
| 012 | Japt | 160225T170247Z | ETHbot |
| 011 | CJam | 160225T165014Z | Luis Men |
| 085 | zsh | 160225T165558Z | Doorknob |
| 061 | Python 2 | 160225T163050Z | lynn |
| 094 | PHP | 160225T164411Z | ricdesi |
| 010 | Pyth | 160225T161805Z | Denker |
Uiua, 11 bytes
≍∩(⍆▽⊸≠@ ⌵)
For ∩ both strings, ⌵ abs (uppercase), ▽ keep ⊸ by ≠ inequality to @ space, and ⍆ sort. Then check if they ≍ match.
Japt, 10 9 bytes
v á øV¸¬v
v á øV¸¬v :Implicit input of strings U & V
v :Lowercase U
á :Permutations
ø :Contains
V¸ : Split V on spaces
¬ : Join
v : Lowercase
Cyborg Hal, 9 8 bytes
{ṇ₁cḷo}ᵛ
Truthy/falsy output is achieved through predicate success/failure, this being Brachylog.
Previously saved a byte using cṇ₁cḷḍ instead of {ṇ₁cḷ}ᵐ under the assumption that the two input strings would be the same length minus whitespace, but I realized that it would succeed where it should fail on Ah Hass, haha.
{ }ᵛ For both strings in the input,
ṇ₁ split on spaces,
c concatenate,
ḷ lowercase,
o and sort.
ᵛ Are the results the same?
Arturo, 33 bytes
$=>[=do map&=>[tally--lower&` `]]
Takes input as a list of two strings.
$=>[ ; a function where input is assigned to &
map&=>[ ; map over input, assign current elt to &
lower& ; lowercase current elt
-- _ ` ` ; remove spaces
tally ; create dictionary of occurrences
] ; end map
do ; put the pair on the stack
= ; are they equal?
] ; end function
Thunno 2, 5 bytes
Rw€Ṡạ
Input as a list of both strings.
Explanation
Rw€Ṡạ # Implicit input
R # Uppercase the input
w # Remove all whitespace
€Ṡ # Sort each string
ạ # All equal?
# Implicit output
Zsh, 51 bytes
g()<<<${(j::)${(os::)1:l}// }
<<<${$(g $1)/$(g $2)}
Similar to my other anagram solution, again using Zsh's gnarly parameter expansion. Added a few bits to lowercase everything and parse out spaces.
lyxaV, 5 bytes
ɽȧvs≈
Or try a testsuite to verify the test cases.
Takes inputs as a list of strings.
Explained
ɽȧvs≈
ɽ # Convert each string to lowercase
ȧ # Remove whitespace from each string
vs # Sort each string
≈ # Are they equal?
Jelly, 12 bytes
ḟ€⁶O&95Ṣ€QLḂ
How it works
ḟ€⁶O&95Ṣ€QLḂ Main link. Input: A (list of strings)
⁶ Yield ' '.
ḟ€ Filter it from each string.
O Apply ordinal to all characters.
&95 Take bitwise AND with 95 to make the ordinals case-insensitive.
Ṣ€ Sort each list of ordinals.
Q Deduplicate the list.
L Get the length.
Ḃ Compute the length's parity (1 -> 1, 2 -> 0).
Alternate version (9 bytes)
Jelly's uppercase atom had a bug, and Jelly still had no built-in to test lists for equality...
ḟ⁶ŒuṢµ€⁼/
How it works
ḟ⁶ŒuṢµ€⁼/ Main link. Input: A (list of strings)
µ€ Map the chain to the left over A.
⁶ Yield ' '.
ḟ Filter it from the string.
Œu Cast to uppercase.
Ṣ Sort.
⁼/ Reduce by equality.
Excel VBA, 122 Bytes
Anonymous VBE immediate window Function that takes input from range [A1:B1] and outputs to the VBE immediate window
a=Replace([A1]," ",""):b=Replace([B1]," ",""):For i=1To Len(a):b=Replace(b,Mid(a,i,1),"|",,1,1):Next:?b=String(len(a),"|")
PHP, 89 bytes
for(;$i++<2;)$r[]=count_chars(join(explode(" ",strtolower($argv[$i]))));echo$r[0]==$r[1];
PHP, 94 bytes
for(;$i++<2;sort($x),$r[]=trim(join($x)))$x=str_split(strtolower($argv[$i]));echo$r[0]==$r[1];
Java, 218 Bytes
First time I've ever written Java...
Golfed:
import java.util.Arrays;boolean M(String a,String b){char[]A=a.toUpperCase().replace(" ","").toCharArray();char[]B=b.toUpperCase().replace(" ","").toCharArray();Arrays.sort(A);Arrays.sort(B);return Arrays.equals(A,B);}
Ungolfed:
import java.util.Arrays;
public class ManageTrashSo {
public boolean M(String a, String b) {
char[] A = a.toUpperCase().replace(" ", "").toCharArray();
char[] B = b.toUpperCase().replace(" ", "").toCharArray();
Arrays.sort(A);
Arrays.sort(B);
return Arrays.equals(A, B);
}
}
Testing:
ManageTrashSo manageTrashSo = new ManageTrashSo();
//True
System.out.println(manageTrashSo.M("Lynn", "Nyl N"));
System.out.println(manageTrashSo.M("Digital Trauma", "Tau Digital Arm"));
//False
System.out.println(manageTrashSo.M("Android", "rains odd"));
System.out.println(manageTrashSo.M("In between days", "bayed entwine"));
D, 99 107 103 102 99 131 116 117 bytes
Edit: forgot about Dre case insensitivity imports lambdas
I don't like this language :D
import std.string,std.algorithm;(string[]a)=>sort(split(strip(a[0].toLower),""))==sort(split(strip(a[1].toLower),""))
To use it, assign it:
import std.string,std.algorithm;
void main () {
auto x = (string[]a) => sort(split(strip(a[0].toLower),"")) == sort(split(strip(a[1].toLower),""))
}
APL, 31 chars
{≡/{x[⍋x←('.'⎕R'\u0')⍵~' ']}¨⍵}
To be used so:
{≡/{x[⍋x←('.'⎕R'\u0')⍵~' ']}¨⍵}'Sp3000' 'P S 3000'
1
In English:
{ ... }¨⍵: for each of the two elements of the argumentx←('.'⎕R'\u0')⍵~' ': transform to uppercase (using a regex...) the string without the spaces and assign the temporary result toxx[⍋x]: sort x≡/: compare the two results of the sorting: if they match, return 1.
Q, 25 Bytes
f:{~/{x@<x:x@&~^x:_x}'x}
NOTE.- counting include function name f: to facilitate tests (as lambda we can decrement 2 Bytes)
Readable version
match over {ascending not null lower x} each x
{.. x ..} is an anonymous function with arg x
_x lowers string x
&~^x where not null x (space is considered null)
x@.. selects elements of x according to indexes ..
<x ascending indexes of x (not values). Ex <"cab" is 1 2 0
x@<x ascending values of x (x at ascending indexes of x)
~ match (diad function). Ex "one"~"one" is true
f'.. applies function f for each argument ..
f/.. applies function f over elements of sequence (fold)
Test
f("Lynn";"Nyl N")
f("Digital Trauma";"Tau Digital Arm")
f("Sp3000";"P S 3000")
f("Manage Trash So";"Those anagrams")
f("Calvins Hobbies";"Helka Homba")
f("Android";"rains odd")
f("In between days";"bayed entwine")
f("Code golf";"cod elf got")
generates (1b = true, 0b = false)
1b
1b
1b
1b
0b
0b
0b
0b
About Q
General-purpose language (APL derivative, specialized in data processing) developed by kx.com. Free full functional evaluation version for Windows/Linux/MacOS.
MATL, 11 bytes
2:"jkXvS]X=
EDIT (May 20, 2016) The code in the link uses Xz instead of Xv, owing to recent changes in the language.
2:" ] % do this twice
j % read input line as a string
k % convert to lowercase
Xv % remove spaces
S % sort
X= % are they equal?
Factor, 68 bytes
[ [ 32 swap remove >lower natural-sort ] map duplicates length 1 = ]
An anyonymous function. Call it like { "array" "of" "strings" } ~quotation~ call.
Pike, 54 112 109 109 96 bytes
#define a(x) sort((array)replace(lower_case(x)," ",""))
int s(mixed i){return a(i[0])==a(i[1]);}
mixed happens to be shorter than array(string).
s returns 1 if its arguments are anagrams.
05AB1E, 9 8 bytes
Code:
lvyð-{}Q
Explanation:
l # Lowercase the strings
vy } # Map over the list, for each...
ð- # remove spaces
{ # and sort
Q # Check equality
Perl, 34 33 + 1 = 34 bytes
s/(.)(.*,.*)\1/$2/i?redo:say!/\w/
Requires the -n flag and the free -M5.010|-E:
$ perl -M5.010 -ne's/(.)(.*,.*)\1/$2/i?redo:say!/\w/' <<< 'hello, lloeh'
1
How it works:
# '-n' make a implicit while loop around the code
s/(.)(.*,.*)\1/$2/i # Remove a letter that occurs on both sides of the comma.
?
redo: # Redo is a glorified goto statement that goes to the top of the while loop
say!/\w/ # Check to see if any letter is left
Thanks to msh210 for suggesting using ternary operators to save one byte
Mathematica, 77 76 bytes
StringMatchQ[##,IgnoreCase->1>0]&@@(""<>Sort[Characters@#/." "->""]&/@{##})&
The first part is actually one of my answers to another question!
C#, 378 bytes
I need a handicap!!
https://dotnetfiddle.net/FNDt0E
using System;
using System.Linq;
using System.Text;
public class Program
{
public static void Main()
{
var l = "Hello World";
var r = "Red Who Loll";
var y = new Func<string,string>(s => new String(s.ToLower().Replace(" ","").OrderBy(v => v).ToArray()));
var z = new Func<string,string,Func<string,string>,bool>((w,x,f) => f(w) == f(x));
var o = z(l, r, y);
Console.WriteLine("{0} & {1} are anagram: {2}",l, r, o);
Console.WriteLine("C#, {0} bytes", Encoding.Unicode.GetByteCount(@"var y = new Func<string,string>(s => new String(s.ToLower().Replace("" "","""").OrderBy(v => v).ToArray()));
var z = new Func<string,string,Func<string,string>,bool>((w,x,f) => f(w) == f(x));"));
}
}
Javascript, 69 61 60 59 bytes
1 byte off thanks @ӍѲꝆΛҐӍΛПҒЦꝆ. 1 byte off with currying (pointed out by @apsillers)
n=>m=>(G=s=>[]+s.toLowerCase().split(/ */).sort())(n)==G(m)
f=n=>m=>
(G=s=>[]+s.toLowerCase()
.split(/ */)
.sort()
)(n)==G(m)
F=(n,m)=>document.body.innerHTML+=`<pre>f('${n}')('${m}') -> ${f(n)(m)}</pre>`
F('Luis Mendo','Don Muesli')
F('Calvins Hobbies','Helka Homba')
F('Android','rains odd')
F('In between days','bayed entwine')
F('Code golf','cod elf got')
F('Lynn','Nyl N')
F('Digital Trauma','Tau Digital Arm')
F('Sp3000','P S 3000')
F('Manage Trash So','Those anagrams')
Perl, 35 bytes
Include +1 for -p
Somewhat abusive since it depends on the program being given on the commandline.
perl -pe'<>=~s%\S%*_=s/$&//i?_:0%reg;$_=!//'
Then give the strings as 2 consecutive lines on STDIN
A very abusive solution is 30 bytes:
perl -ne'<>=~s%\w%1/!s/$&//i%reg;1/!//'
This crashes if the strings are not anagrams and therefore gives a false exit code from the point of view of the shell. It also gives garbage on STDERR for that case. If the strings are anagrams the program is silent and gives a "true" exit code
C, 165 bytes
#define d(x) int x(char*a,char*b){
d(q)return*a&224-*b&224;}
#define n(x) for(qsort(x,strlen(x),1,(__compar_fn_t)q);*x<33;x++);
d(s)n(a)n(b)return strcasecmp(a,b);}
Readable and in working context,
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
// start of comparison
int q(char *a, char *b){
return ((*a)&0xdf)-((*b)&0xdf); // case-insensitive
}
int s(char *a, char *b){
for(qsort(a,strlen(a),1,(__compar_fn_t)q); *a<33; a++) /**/;
for(qsort(b,strlen(b),1,(__compar_fn_t)q); *b<33; b++) /**/;
return strcasecmp(a,b);
}
// end of comparison
int main(int i, char **v){
printf("'%s' '%s'", v[1], v[2]);
printf("=> %d\n", s(v[1], v[2])); // 0 if equalish
return 0;
}
GNU Sed, 33
Score includes +2 for -rn options to sed.
This is almost a direct port of @FryAmTheEggman's Retina answer:
:
s/(\w)(.*,.*)\1/\2/i
t
/\w/Q1
Pyke (commit 30, noncompetitive), 9 bytes
Fl1dk:S)q
Explanation:
F ) - for _ in eval_or_not(input())
l1 - ^.lower()
dk: - ^.replace(" ", "")
S - sorted(^)
q - ^==^
Retina, 25
i+`(\w)(.*,.*)\1
$2
^\W*$
Try it Online! Additionally, you can run a modified multi-line version.
Delete letters from before the comma along with their matches after the comma. If we have no letters left then it was an anagram.
Bash + GNU utilities, 51
f()(fold -1<<<${@^^}|sort)
f $1|diff -qBw - <(f $2)
- Define a function
f()which:${@^^}converts all parameters to upper casefold -1splits chars - one per linesorts lines
- call
diffwith-qto suppress full diff output and-Bwto ignore whitespace changes
PowerShell, 81 bytes
param([char[]]$a,[char[]]$b)-join($a-replace' '|sort)-eq-join($b-replace' '|sort)
A slight rewrite of my answer on the linked Anagram challenge.
Takes input as char-arrays, performs a -replace operation to remove spaces, sorts them (which sorts alphabetically, not by ASCII value), then -joins them back into a string. The -eq in PowerShell is by default case-insensitive, but here it must be performed on strings, as [char]'a' is not equal to [char]'A', hence the reason for -join.
Seriously, 11 9 bytes
2`,ùSô`n=
Everyone seems to be using the same algorithm. Here it is yet again.
2` `n Do it twice
, Read a string
ù Make it lowercase
S Sort
ô Strip spaces.
= Check equality.
Edit: realized sorting does work correctly on strings, and sorts spaces to the front so strip() will work.
Ruby, 50 bytes
def f;gets.upcase.chars.sort.join.strip;end
p f==f
Writing f=->{...} and f[]==f[] is just as long. :(
Japt, 12 bytes
N®v ¬n ¬xÃä¥
How it works
// Implicit: N = array of input strings
N® Ã // Take N, and map each item Z to:
v ¬n // Take Z.toLowerCase(), split into chars, and sort.
¬x // Join and trim off whitespace.
ä¥ // Reduce each pair of items (that's exactly one pair) X and Y to X == Y.
CJam, 11 12 14 bytes
3 2 bytes removed thanks to @FryAmTheEggman
{lelS-$}2*=
{ }2* e# do this twice
l e# read line as a string
el e# make lowercase
S- e# remove spaces from string
$ e# sort
= e# compare strings
zsh, 85 bytes
[ $(for x in $@;{tr -d \ <<<$x|tr A-Z a-z|fold -1|sort|paste -sd x}|uniq|wc -l) = 1 ]
Input as command line arguments, output as return code.
The for syntax makes this Bash-incompatible.
[ # test...
$(for x in $@; # map over arguments
{tr -d \ <<<$x # remove spaces
|tr A-Z a-z # lowercase
|fold -1 # put each character on its own line
|sort # sort lines
|paste -sd x # remove all newlines except last
}|uniq # take only unique lines
|wc -l # how many lines remain?
) = 1 ] # if only 1 line left, it must have been an anagram
Python 2, 63 61 bytes
lambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
An anonymous function that, in fact, takes n arguments and determines if all n of them are mutual palindromes! f("Lynn", "Nyl N") returns True.
This set comprehension trick is by xnor. It saved two bytes, but the old approach looked very neat:
exec"a=`sorted(input().lower())`[2::5].strip();a"*2;print a==aa
PHP, 109 94 bytes
function f($x){return str_split((trim($x));}function g($x,$y){return array_diff(f($x),f($y));}
Blech, the two function/returns are killing me here.
Returns the difference between two string inputs as an array of characters. PHP considers [] falsy, satisfying the return requirements.
Pyth, 11 10 bytes
Thanks to @FryAmTheEggman for teaching me the power of ;!
qFmSr-d;0Q
Takes a list of two strings as input.
Explanation
qFmSr-d;0Q # Q = input
m Q # map Q with d as lambda variable
-d; # filter spaces out of the string
r 0 # convert to lowercase
S # sort all characters in string
qF # Unfold resulting list and check for equality