## javascript speed test

### Aside

given the following function:

```  function addInts(anArray){
var result = 0;
for (var i = 0; i < anArray.length; ++i){
if (anArray[i] < 21) {
result = result + anArray[i];
} else {
result = result + anArray[i] - 21;
}
}
return result;
}
```

what would you expect will run faster?

```    addInts(sortedArray); #sorted
```

`[More programming riddles]`

## 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]`

## javascript speed test

### Aside

if you had to guess, which of the following two bits of javascript code would you say executes faster?

Exhibit A:

```var keys = Object.keys(MyObj); //cloning the key array
var length = keys.length;
for (var i = 0; i < length; i++) {
var val = MyObj[keys[i]];
};
```

Exhibit B:

```for (var key in MyObj) {
if (MyObj.hasOwnProperty(key)) { //hasOwnProperty is a native function
var val = MyObj[key];
}
}
```

`[More programming riddles]`

this is what things looked like last year in september, with an up to date version of chrome: ## arrays (javascript)

### Aside

how well do you know your arrays?

figure out what you think each line does, and then check yourself by running them in a console

```test = [1,2,3]

test
test.length
test.length = 5
test.length
test
```

`[More programming riddles]`

## riddle 11 (javascript)

### Aside

javascript riddle

does null == false?

```if (null)          { console.log("null"); }
if (null == false) { console.log("null == false"); }
if (!null)         { console.log("!null"); }
```

`[More programming riddles]`