# Fuzz puzzles

Are you ready to test your skills as a human fuzzer? Here’s a collection of puzzles where the objective is to find an input that leads to the execution of what appears to be *dead code*.

## JavaScript

### Puzzle 1: Cyclic ordering

```
function f(a, b, c) {
if (a < b && b < c && c < a) {
throw Error();
}
}
```

**Goal**: Find values for `a`

, `b`

and `c`

such that `f(a,b,c)`

throws an error.

**Constraint**: All input values should be of primitive type (i.e. not objects or arrays).

### Puzzle 2: And but not Or

```
function f(a, b) {
if (a > b || a == b) {
return true;
} else if (a >= b) {
throw Error();
} else {
return false;
}
}
```

**Goal**: Find values for `a`

and `b`

such that `f(a, b)`

throws an error.

**Constraint**: All input values should be of primitive type (i.e. not objects or arrays).

### Puzzle 3: Sort descending by default

```
function f(a, b) {
var min = a <= b ? a : b;
var max = a >= b ? a : b;
var [first, second] = [a, b].sort();
if (a != b && first === max && second === min) {
throw Error();
}
}
```

**Goal**: Find values for `a`

and `b`

such that `f(a, b)`

throws an error.

**Constraint**: All input values should be of primitive type (i.e. not objects or arrays).

## Python

### Puzzle 4: To be and not to be

```
def h(x, y):
return x is y+1
def g(x):
return h(x, x-1)
def f(x):
if g(x) and not g(x+1):
raise Exception()
```

**Goal**: Find a value for `x`

such that `f(x)`

raises an exception.

**Constraint**: The input value is of a primitive type (i.e. it is a number). Use the reference implementation of Python (aka CPython).

**Hint**: No solutions exist on some other implementations of Python such as PyPy.

Credit to Kevin Laeufer for introducing me to this phenemenon.