Mathspp Blog

A blog dedicated to mathematics and programming!

This blog has a really interesting assortment of articles on mathematics and programming. You can use the tags to your right to find topics that interest you, or you may want to have a look at

You can also subscribe to the blog newsletter.

1187
str and repr | Pydon't

Python's str and repr built-in methods are similar, but not the same. Use str to print nice-looking strings for end users and use repr for debugging purposes. Similarly, in your classes you should implement the __str__ and __repr__ dunder methods with these two use cases in mind.

415
What all promotions actually mean

Nowadays stores come up with all sorts of funky promotions to catch your eye... But how much money do you actually save with each type of promotion?

2318
Assignment expressions and the walrus operator := | Pydon't

The walrus operator := can be really helpful, but if you use it in convoluted ways it will make your code worse instead of better. Use := to flatten a sequence of nested ifs or to reuse partial computations.

712
Problem #028 - hidden key 🗝️

There is a key hidden in one of three boxes and each box has a coin on top of it. Can you use the coins to let your friend know where the key is hiding?

992
EAFP and LBYL coding styles | Pydon't

In Python, if you are doing something that may throw an error, there are many cases in which it is better to "apologise than to ask for permission". This means you should prefer using a try block to catch the error, instead of an if statement to prevent the error.

1145
Unpacking with starred assignments | Pydon't

How should you unpack a list or a tuple into the first element and then the rest? Or into the last element and everything else? Pydon't unpack with slices, prefer starred assignment instead.

400
Problem #027 - pile of coconuts 🥥

Five sailors and their monkey were washed ashore on a desert island. They decide to go get coconuts that they pile up. During the night, each of the sailors, suspicious the others wouldn't behave fairly, went to the pile of coconuts take their fair share. How many coconuts were there in the beginning..?

1769
Pydon't disrespect the Zen of Python

The "Zen of Python" is the set of guidelines that show up in your screen if you import this. If you have never read them before, read them now and again from time to time. If you are looking to write Pythonic code, write code that abides by the Zen of Python.

860
Problem #026 - counting squares

I bet you have seen one of those Facebook publications where you have a grid and you have to count the number of squares the grid contains, and then you jump to the comment section and virtually no one agrees on what the correct answer should be... Let's settle this once and for all!

542
Problem #025 - knight's tour

Alice and Bob sit down, face to face, with a chessboard in front of them. They are going to play a little game, but this game only has a single knight... Who will win?

3605
Pydon't Manifesto

"Pydon'ts" are short, to-the-point, meaningful Python programming tips. A Pydon't is something you should not do when programming in Python. In general, following a Pydon't will make you write more Pythonic code.

752
Problem #024 - hats in a line

Some people are standing quiet in a line, each person with a hat that has one of two colours. How many people can guess their colour correctly?

430
Filling your Pokédex - a probabilistic outlook

Join me in this blog post for Pokéfans and mathematicians alike. Together we'll find out how long it would take to fill your complete Pokédex by only performing random trades.

457
Implementing an interpreter in 14 lines of Python.

In this blog post I'll show you how you can write a full interpreter for the brainf*ck programming language in just 14 lines of Python. Be prepared, however, to see some unconventional Python code!

498
Problem #023 - guess the polynomial

In this problem you have to devise a strategy to beat the computer in a "guess the polynomial" game.

310
Twitter proof: consecutive integers are coprime

Let's prove that if $$k$$ is an integer, then $$\gcd(k, k+1) = 1$$. That is, any two consecutive integers are coprime.

295
Twitter proof: maximising the product with a fixed sum

Let's prove that if you want to maximise $$ab$$ with $$a + b$$ equal to a constant value $$k$$, then you want $$a = b = \frac{k}{2}$$.

442
Problem #022 - coprimes in the crowd

This simple problem is an example of a very interesting phenomenon: if you have a large enough "universe" to consider, even randomly picked parts exhibit structured properties.

725
Problem #021 - predicting coin tosses

Alice and Bob are going to be locked away separately and their faith depends on their guessing random coin tosses!

409
Let's build a simple interpreter for APL - part 3 - the array model

In this blog post we will go over some significant changes, from implementing APL's array model to introducing dyadic operators!