javascript anagram detector

Aside

what’s the shortest anagram detector you know how to write, in javascript?


there must be a shorter way to do this. highlight below to see a solution.


var anagramDetector = function (x,y) {
   if (x.length != y.length) return false;
   var alpha_x = x.split("").sort().join("");
   var alpha_y = y.split("").sort().join("");
   for ( j = 0; j<y.length;++j) {
       if (alpha_x[j] != alpha_y[j]) return false;
  }
  return true;
}

PS: there’s a cool method for solving this for a fixed alphabet, using primes


[More programming riddles]

detecting anagrams in python

Aside

what’s the shortest anagram detector you know how to write, in python?


this is one that keeps feeling like it should be a one liner (because it’s very similar to this one liner), but i suspect can’t be done in one line

highlight to see a solution.


def fn(x,y):
    if len(x) != len(y):
        return False
    for i in x:
        y = y.replace(i,'',1)
    return not len(y) > 0

PS: there’s a cool method for solving this for a fixed alphabet, using primes


[More programming riddles]

null vs. undefined (javascript)

Aside

how well do you know your “null”s and “undefined”s?

write down what you expect the result of each operation to be. run them in a javascript console (ChromeFirefox/FirebugSafari). compare, verify, contrast, and, for fun, give yourself a score out of “3/4 donut”.

// Equality
null == undefined
null === undefined
!null == !undefined
!null === !undefined

// addition and concatenation
null + ''
undefined + ''
null + 1
undefined + 1

// fun with enumerations
test = []; test.push(null); console.log(test)
test = []; test.push(undefined); console.log(test)
{null:2}
{undefined:2}
{a:null}
{a:undefined}

[More programming riddles]