# Essays/Vier Neun

## The Puzzle

From the New Scientist:

VIER and NEUN represent 4-digit squares, each letter denoting a distinct digit. You are asked to find the value of each, given the further requirement that each uniquely determines the other.

The "further requirement" means that of the numerous pairs of answers, choose the one in which each number only appears once in all of the pairs.

## A Solution

The 4-digit squares are` >.%:1000 `squared to` <.%:9999 `squared, or,
as a character matrix,

s=: 4":,.*:32+i.68 4{.s 1024 1089 1156 1225 _4{.s 9216 9409 9604 9801

To form all pairs of such squares, catenate each row to all other rows, and make into a matrix, thus:

p=: ,/ ,"1/ ~ s $p 4624 8 4{.p 10241024 10241089 10241156 10241225 _4{.p 98019216 98019409 98019604 98019801

The pattern of digit assignments must be the same as the pattern of letters in "vierneun", and so:

a=: p #~ (i.~'vierneun') -:"1 i.~"1 p $a 9 8 a 13694624 13695625 17645625 43561521 47615625 62419409 70561521 75691681 75694624

Finally, choose numbers that are unique in all the pairs. An item is unique if its index of first occurrence is the same as its index of last occurrence. Thus:

a #~ (4{."1 a) *.&(i.~ = i:~) 4}."1 a 62419409

Collecting together the essential lines:

p=: ,/ ,"1/ ~ 4 ": ,. *: 32+i.68 a=: p #~ (i.~'vierneun')-:"1 i.~"1 p a #~ (4{."1 a) *.&(i.~ = i:~) 4}."1 a 62419409

### See also

Contributed by Roger Hui. Substantially the same text previously appeared as a thread in the newsgroup comp.lang.apl on 2001-03-02.