Saturday, September 21, 2013

Introduction

I am Sam Donow, a Sophomore at Williams College, and this is my blog for a language challenge of mine related to Project Euler.

There are now 50 posts on this blog, and the introductory post explaining what I am doing is way at the bottom, so I feel as though I ought to restate what I am doing.

Project Euler is a collection of increasingly difficult mathematical problems which are expected to require computers to solve. People are drawn to Project Euler for various reasons - mental stimulation, interest in the mathematics of the problems, a wish for something to do when learning a new programming language, etc. My goal is to solve as many of the problems in as many different languages as possible. At the time of this writing, I have solved 43 problems in almost as many language (why "almost as many" will be explained below). I plan on going for as long as I can - there are a LOT of programming languages out there, and whenever it seems like I might be running out of reasonable new languages to use, something that I had forgotten before springs up.

The challenge began as part of a 24-hackathon, where I attempted to and succeeded at solving 20 problems in 20 different languages. Since then, it has continued for over a month of non-continuous work. Below are some of the formal rules I have set down for myself, in the form that I am currently following.


  • In order to make the challenge well-defined, I must have a well-defined metric of difference for languages. For this metric, I consider different revisions of a language to all be the same - so Fortran 95 is the same as Fortran 77, Java 7 is the same as Java 5, etc. In the past I have considered other languages, like C and C++ as the same for my purposes, but I will likely reverse that soon due to them being no more similar than some other language pairs.
  • I can re-solve problems I have already solved in a different language, and reuse the language that I originally used to solve the first problem. The reason for this rule is to promote me solving problems frequently - If I think I may eventually solve problem 44 in INTERCAL, then  without this rule I would have to wait until I had the time to learn and use INTERCAL, but with this language, I can solve numerous problems in relatively easy languages frequently, and then every once and a while go back and use a crazy language.
And those are basically the rules. I am still going through the problems, and still having tons of fun discovering and using new/old/crazy languages. Just today I solved a problem in Prolog, and now I am only 7 problems away from having solved 50, which would bring my profile to level 2 and put it in the 92nd percentile of Project Euler users, despite the fact that most (all?) of the other users have not solved problems under the crazy restrictions I am solving them under.

No comments:

Post a Comment