Crikey, Listener 4503 was tricky, wasn’t it? I eventually succumbed to writing a few of those functions that I had always meant to for years, for future numerical puzzle-*setting*. You perhaps know the sort: **isprime()** to test if the number in brackets is prime and so on. The functions **istriang()** and **isdiag()** soon followed. Did it help much here? Probably not. In fact the most re-usable one was **getdigit(number, digit)** to let me select any single digit within a number e.g. to compare it with another, check if it is odd, …

My suspicion is that many seasoned numerical setters and solvers must have some of these at their fingertips and more than likely a lot more – though this was the first puzzle that finally encouraged *me*.

I think it was about Sunday lunchtime when I finally cracked L4503, having *eventually* used the final 5 lines of the Preamble for the first time to determine whether my LOI at 26ac should be 522 or 524.

I was left with the worrying suspicion that their surely must have been a much more straightforward Solution Path than mine. The Mersenne primes helped get an initial toehold but some of the properties – especially for me ‘f’ and ‘i’ – seemed to give little info until right at the end.

But I did think that the hidden message telling us to indicate those different ways to reach that special number 4503 was good. There were, I think:

- 19 x 3 x 79
- 57 x 79
- 19 x 237 and even
- 18012 / 4

*Unbelievably* well hidden, I hear you say. My finished article therefore looked like this:

What was that? You didn’t spot the hidden message??

Cheers

Tim / Encota