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". > [...] > "A lot of Olympiad questions in the competition are about > 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. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.