# Le Monde puzzle [#954]

March 24, 2016
By

[This article was first published on R – Xi'an's Og, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

A square Le Monde mathematical puzzle:

Given a triplet (a,b,c) of integers, with a? Can you find the triplet (a,b,c) that produces the sum a+b+c closest to 1000?

This is a rather interesting challenge and a brute force resolution does not produce interesting results. For instance, using the function is.whole from the package Rpmfr, the R functions

```ess <- function(a,b,k){
#assumes a
and
quest1<-function(a){
b=a+1
while (b<1000*a){
if (is.whole(sqrt(a+b))){
k=b+1
while (k<100*b){
if (is.whole(sqrt(a+k))&is.whole(b+k))
if (ess(a,b,k)) break()
k=k+1}}
b=b+1}
return(c(a,b,k))
}

do not return any solution when a=1,2,3,4,5
Looking at the property that a+b,a+c,b+c, and a+b+c are perfect squares α²,β²,γ², and δ². This implies that
a=(δ+β)(δ-β), b=(δ+γ)(δ-γ), and c=(δ+α)(δ-α)
with 1<α<β<γ<δ. If we assume β²,γ², and δ² consecutive squares, this means β=γ-1 and δ=γ+1, hence
a=4γ, b=2γ+1, and c=(γ+1+α)(γ+1-α)
which leads to only two terms to examine. Hence writing another R function
abc=function(al,ga){
a=4*ga
b=2*ga+1
k=(ga+al+1)*(ga-al+1)
return(c(a,b,k))}

and running a check for the smallest values of α and γ leads to the few solutions available:
> for (ga in 3:1e4)
for(al in 1:(ga-2))
if (ess(abc(al,ga))) print(abc(al,ga))
[1] 80 41 320
[1] 112 57 672
[1] 192 97 2112
[1] 240 121 3360
[1] 352 177 7392
[1] 416 209 10400
[1] 560 281 19040
[1] 640 321 24960
[1] 816 409 40800
[1] 912 457 51072

Filed under: Kids, R Tagged: Alice and Bob, is.whole, Le Monde, mathematical puzzle, R, recursive function, Rmpfr

var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' };

(function(d, t) {
var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;
s.src = '//cdn.viglink.com/api/vglnk.js';
var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);
}(document, 'script'));

Related
ShareTweet

To leave a comment for the author, please follow the link and comment on their blog:  R – Xi'an's Og.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or  here if you don't.

If you got this far, why not subscribe for updates from the site?  Choose your flavor: e-mail, twitter, RSS, or facebook...
```

Comments are closed.

# Never miss an update! Subscribe to R-bloggers to receive e-mails with the latest R posts.(You will not see this message again.)

Click here to close (This popup will not appear again)