Le Monde puzzle 847 in Julia
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Code
A function to check if a triplet has the desired property
In [1]:
function lemonde847(xx) a=[xx[1],2] b=[xx[2],8] c=[xx[3],4] sum(kron(c,kron(a,b))) end
Out[1]:
lemonde847 (generic function with 1 method)
Just a check – the function does indeed result in 1768 for the triplet 6 5 13.
In [2]:
lemonde847([6,5,13])
Out[2]:
1768
Check all combinations of numbers 1 to 60 excluding 2, 4 and 8. These need to be permuted later on. 60 may be a bit much, but how to calculate a bound? After all, imagine a set 1 3 60, that is only 1428. On the other hand, a combination with 59 and 60 should be too large. Hence we make a filter to exclude some. The rows where all three test numbers multiplied are higher than 1768. The remaining combinations are permuted and tested.
In [3]:
lemonde847([1,60,3])
Out[3]:
1428
In [4]:
totest = collect(combinations( symdiff(1:50, [2,4,8]),3))
Out[4]:
16215-element Array{Array{Int64,1},1}: [1,3,5] [1,3,6] [1,3,7] [1,3,9] [1,3,10] [1,3,11] [1,3,12] [1,3,13] [1,3,14] [1,3,15] [1,3,16] [1,3,17] [1,3,18] ⋮ [45,48,50] [45,49,50] [46,47,48] [46,47,49] [46,47,50] [46,48,49] [46,48,50] [46,49,50] [47,48,49] [47,48,50] [47,49,50] [48,49,50]
In [5]:
for i in 1:size(totest)[1] if prod(totest[i,])<1768 test2 = collect(permutations(totest[i,])) for j in 1:6 if lemonde847(test2[j,])==1768 print(test2[j,]') end end end end 6 5 13
Seems I found the answer; 6 5 13. The only thing left is to export the results. A bit of googling showed http://ipython.org/ipython-doc/stable/interactive/nbconvert.html.
Final Notes
Conversion
In the end I converted the script via:
ipython nbconvert lemonde847.ipynb
The resulting file was opened in libreoffice and copied pasted into blogger. This gave a bit better results than conversion using
ipython nbconvert --template basic lemonde847.ipynb
and a copy paste of the .html directly in blogger.
Some post editing was done after examination of the preview of the post, but that is fairly normal for me.
Time usage
The calculation time was minimal. Most of the time was used in understanding Julia syntax, debugging, writing code, writing blog text, installation of pandoc. A lot of these things are one-off, but still, this last sentence took more time than the computation time.
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.