Internationali­zation Puzzles

Why Internationalization Puzzles?

Hi, my name is Martijn van Iersel, and I work as developer at TOPdesk. There, I teach a workshop about internationalization.

Internationalization (abbreviated as i18n), is what software developers do to make software work for an international audience. This includes foreign characters, dates and currencies, paper sizes, time zones, daylight saving time, and all the other little things that may be different from country to country.

To help teach these concepts, I created a series of programming puzzles, and they are available to everyone!

How to solve a puzzle

For each puzzle, you must write a program that analyzes the input file, and produces a result. Submit the result and get immediate feedback to see if you solved it. Each puzzle introduces a new concept that has to do with internationalization. You will learn more and more as you go.

Each puzzle also includes a test-input, that is fully worked out with the answer given. If your program can give the correct answer on the test input, then it will usually work for the real input as well.

You may use any programming language you like. You are encouraged to use libraries as much as possible (in fact, most challenges are hard to solve without some library). Most puzzles come with a list of reading materials and online tools that can help you to understand the problem. You may use Google or Wikipedia to find more information - this is not an exam!

I discourage the use of AI for these puzzles. AI can be a useful tool for programmers and I'm not against it, but in this case: If you let AI solve the puzzle, then you will learn nothing new, and the AI will learn nothing new either. That all seems rather futile to me.

To discourage the use of AI to cheat the leaderboards, the first 10 minutes of leaderboard will be equalized & randomized.

The puzzles start out easy. The first few should take less than 30 minutes for an experienced programmer. The difficulty of the puzzles ramps upwards, and later puzzles will be a challenge even for experienced software engineers. How far can you go?

You find the list of puzzles on the main page, where you can also track your progress.

Good luck!

Comparison to Advent of Code

While creating this, I was inspired by the advent of code, an annual code challenge that runs each December. If you're familiar with the advent of code, then a comparison can be helpful.

i18n-puzzles are like the advent of code because:

But they are different because:

Contact

If you're stuck, or if you want to show off your solution, there are two places to go:

You can send me a message in the following places:

Conference Talk

Watch my conference talk on YouTube to hear me explain the ideas behind these puzzles. But be advised: this presentation contains spoilers for four early puzzles.

Terms of Use

The puzzles, including input files, are licensed under the Creative Commons Atribution license CC BY 4.0. You may copy any part of this site, as long as you attribute Matijn van Iersel and i18n-puzzles.com

This also means that you may copy the input files into your own repository, as long as you give credit somewhere in your repository.

Please access this site responsibly. Do not make more requests than what is reasonable for its intended use.

You may access the puzzle input files using automatic tools, provided that you do so for personal use only, and in a reasonable and responsible manner.

i18n-puzzles.com is provided "as is" without warranties of any kind. I do not guarantee the accuracy or completeness of any content on the site. I am not liable for any damages arising from your use of the website.

Acknowledgements

Thanks to everybody who reported bugs, typos and inconsistencies. Thanks to Martin Tichem, Mart Hagenaars, Jesse van Assen, Barni Szabo, Dániel Urbán, Aliki Georgakaki, Jelle Postma, Joep Weijers, Kateryna, Tobias Voß and Yubi for code, testing and feedback. Thanks to Eric Wastl for creating the advent of code which is a real inspiration for me.

Privacy

For information on how we handle your data, please see the Privacy Policy