Eric speelt graag met getallen. Hij maakte dit overzicht van getallen en Belgische vlaggetjes. Welke reeks komt op de plaats van de vraagtekens?
In bovenstaande puzzel spelen Belgische getallen een prominente rol. Een getal $$n \in \mathbb{N}$$ is een Belgisch $$k$$-getal ($$k \in \mathbb{N}$$) als $$n$$ voorkomt in de oneindige getallenrij die begint met $$k$$ en waarvan de verschillen tussen twee opeenvolgende getallen bij herhaling steeds opeenvolgend gelijk zijn aan de opeenvolgende cijfers van $$n$$. Het getal $$k$$ wordt de beginwaarde van de getallenrij genoemd.
Veronderstel dat $$k = 7$$. Om te controleren of $$n = 152$$ een Belgisch 7-getal is, maken we een getallenrij die begint bij zeven en waarvan de verschillen tussen de opeenvolgende getallen gelijk zijn aan de herhaalde reeks +1, +5, +2, +1, +5, +2, +1, … (de opeenvolgende cijfers van het getal 152). Op die manier krijgen we de getallenrij
7, 8, 13, 15, 16, 21, 23, 24, 29, 31, …
Als 152 in deze getallenrij voorkomt dan is het een Belgisch 7-getal, en dat is hier inderdaad het geval. Het getal 108 is dan weer een Belgisch 0-getal, zoals blijkt uit de getallenrij
0, 1, 1, 9, 10, 10, 18, 19, 19, 27, …, 90, 91, 91, 99, 100, 100, 108, 109, 109, …
Een getal $$n \in \mathbb{N}$$ is een Vlaams getal als het een Belgisch $$k$$-getal is, met $$k$$ gelijk aan het eerste cijfer van $$n$$. Zo is 179 bijvoorbeeld een Vlaams getal omdat het een Belgisch 1-getal is, zoals blijkt uit de getallenrij
1, 2, 9, 18, 19, 26, 35, 36, 43, 52, …, 154, 155, 162, 171, 172, 179, 188, 189, …
Een getal $$n \in \mathbb{N}$$ is een West-Vlaams getal als het een Vlaams getal is waarvan de getallenrij begint met dezelfde cijfers als die van $$n$$ zelf, in dezelfde volgorde. Zo is 8161 bijvoorbeeld een West-Vlaams getal omdat het een Belgisch 8-getal is met als corresponderende getallenrij
8, 16, 17, 23, 24, 32, 33, 39, 40, …, 8145, 8151, 8152, 8160, 8161, 8167, 8168, …
Gevraagd wordt:
Schrijf een functie getallenrij waaraan een getal $$n \in \mathbb{N}$$ (int) moet doorgegeven worden aan de parameter n. De functie heeft ook nog een tweede optionele parameter k waaraan een getal $$k \in \mathbb{N}$$ (int, standaardwaarde 0) kan doorgegeven worden. De functie heeft ook nog een derde optionele parameter aantal waaraan een natuurlijk getal (int) kan doorgegeven worden. Als er expliciet een getal $$a$$ wordt doorgegeven aan de parameter aantal dan moet de functie een lijst (list) teruggeven met de eerste $$a$$ getallen (int) van de getallenrij die correspondeert met $$n$$ en begint bij $$k$$. Als er niet expliciet een waarde wordt doorgegeven aan de parameter aantal dan moet de functie een lijst (list) teruggeven met de getallen (int) van de getallenrij die correspondeert met $$n$$ en begint bij $$k$$, waarbij de rij eindigt bij het eerste getal dat groter of gelijk is aan $$n$$.
Schrijf een functie isbelgisch waaraan een getal $$n \in \mathbb{N}$$ (int) moet doorgegeven worden aan de parameter n. De functie heeft ook nog een tweede optionele parameter k waaraan een getal $$k \in \mathbb{N}$$ (int, standaardwaarde 0) kan doorgegeven worden. De functie moet een Booleaanse waarde (bool) teruggeven die aangeeft of $$n$$ een Belgisch $$k$$-getal is.
Schrijf een functie beginwaarden waaraan een getal $$n \in \mathbb{N}$$ (int) moet doorgegeven worden aan de parameter n. De functie moet een stijgende lijst (list) teruggeven met alle $$k \in \mathbb{N}$$ (int) waarvoor $$n$$ een Belgisch $$k$$-getal is.
Schrijf een functie isvlaams waaraan een getal $$n \in \mathbb{N}$$ (int) moet doorgegeven worden aan de parameter n. De functie moet een Booleaanse waarde (bool) teruggeven die aangeeft of $$n$$ een Vlaams getal is.
Schrijf een functie iswestvlaams waaraan een getal $$n \in \mathbb{N}$$ (int) moet doorgegeven worden aan de parameter n. De functie moet een Booleaanse waarde (bool) teruggeven die aangeeft of $$n$$ een West-Vlaams getal is.
>>> getallenrij(108)
[0, 1, 1, 9, 10, 10, 18, 19, 19, 27, 28, 28, 36, 37, 37, 45, 46, 46, 54, 55, 55, 63, 64, 64, 72, 73, 73, 81, 82, 82, 90, 91, 91, 99, 100, 100, 108]
>>> getallenrij(123, aantal=10)
[0, 1, 3, 6, 7, 9, 12, 13, 15, 18]
>>> getallenrij(n=81, k=1)
[1, 9, 10, 18, 19, 27, 28, 36, 37, 45, 46, 54, 55, 63, 64, 72, 73, 81]
>>> getallenrij(n=61, k=6)
[6, 12, 13, 19, 20, 26, 27, 33, 34, 40, 41, 47, 48, 54, 55, 61]
>>> isbelgisch(81)
True
>>> isbelgisch(108)
True
>>> isbelgisch(n=81, k=1)
True
>>> isbelgisch(n=108, k=1)
False
>>> beginwaarden(108)
[0, 8, 9, 17, 18, 26, 27, 35, 36, 44, 45, 53, 54, 62, 63, 71, 72, 80, 81, 89, 90, 98, 99, 107, 108]
>>> beginwaarden(81)
[0, 1, 9, 10, 18, 19, 27, 28, 36, 37, 45, 46, 54, 55, 63, 64, 72, 73, 81]
>>> isvlaams(108)
False
>>> isvlaams(81)
False
>>> isvlaams(61)
True
>>> isvlaams(68)
True
>>> iswestvlaams(108)
False
>>> iswestvlaams(81)
False
>>> iswestvlaams(61)
True
>>> iswestvlaams(68)
False
De Eric uit de puzzel is een verwijzing naar de Belgische amateurwiskundige Éric Angelini die de Belgische getallen rond 2005 bedacht heeft. Hij noemde ze eerst Eric-getallen, maar veranderde ze later van naam naar analogie met de Romeinse1, Arabische2 en Catalaanse3 getallen.
De namen voor de Vlaamse en West-Vlaamse getallen hebben we speciaal voor deze opgave bedacht. Eigenlijk heten ze officieel zelf-Belgische getallen van de eerste en tweede soort.