# [R] A little exercise in R!

Petr Savicky savicky at cs.cas.cz
Sat Apr 14 06:54:01 CEST 2012

```On Fri, Apr 13, 2012 at 10:34:49PM +0100, Ted Harding wrote:
> Greetings all!
> A recent news item got me thinking that a problem stated
> therein could provide a teasing little exercise in R
> programming.
>
> http://www.bbc.co.uk/news/uk-england-cambridgeshire-17680326
>
>   Cambridge University hosts first European 'maths Olympiad'
>   for girls
>
>   The first European girls-only "mathematical Olympiad"
>   competition is being hosted by Cambridge University.
>   [...]
>   Olympiad co-director, Dr Ceri Fiddes, said competition questions
>   encouraged "clever thinking rather than regurgitating a taught
>   syllabus".
>   [...]
>   proving things," Dr Fiddes said.
>
>   "If you have a puzzle, it's not good enough to give one answer.
>   You have to prove that it's the only possible answer."
>   [...]
>   "In the Olympiad it's about starting with a problem that anybody
>   could understand, then coming up with that clever idea that
>   enables you to solve it," she said.
>
>   "For example, take the numbers one up to 17.
>
>   "Can you write them out in a line so that every pair of numbers
>   that are next to each other, adds up to give a square number?"
>
> Well, that's the challenge: Write (from scratch) an R program
> that solves this problem. And make it neat.

Hi.

Is recursion acceptable? Using recursion, i obtained
two solutions.

extend <- function(x)
{
y <- setdiff((1:17), x)
if (length(y) == 0) {
cat(x, "\n")
return
}
y <- y[(y + x[length(x)]) %in% (1:5)^2]
for (z in y) {
extend(c(x, z))
}
}

for (i in 1:17) extend(i)

16 9 7 2 14 11 5 4 12 13 3 6 10 15 1 8 17
17 8 1 15 10 6 3 13 12 4 5 11 14 2 7 9 16

Petr.

```