# Puzzles/If Then Else or Case

A user posed the question: Given a list of integers, set each item that is less than n1 to n2 . Can it be expressed without an explicit loop?

```(x * b) + (y * -.b)
```

x and y are conformable numeric arrays, and b is a conformable boolean array. An element of the result corresponding to where b is 1,  is taken from x,  where b is 0 , is taken from y .

Using this to answer the original question:

```(list * n1 <: list) + n2 * n1 > list
```

## Item Amend

```b}x,:y
```

See http://www.jsoftware.com/books/help/release/iamend.htm . The phrase works on non-numeric arrays, and can be generalized to select from more than two cases, c}x,y,...,:z .

Using this to answer the original question:

```(n1 > list)} list,:n2
```

## Direct Amend

Amend can also be use dyadically. This phrase also works on non-numeric arrays. Here, x must be conformable as an item or +/b items of y.

```x (I. b)} y.
```

Using this to answer the original question:

```n2 (I. n1 > list)} list
```