
Het getal 6174 is bekend als de constante van Kaprekar, genoemd naar de Indiase wiskundige Shri Dattathreya Ramachandra Kaprekar (1905 - 1988). De eigenschap die dit getal bezit wordt aangegeven door de volgende stappen te doorlopen:
Neem een willekeurig natuurlijk getal van 4 cijfers. Zet de cijfers in oplopende en in aflopende volgorde, zodat twee getallen van 4 cijfers worden verkregen. Trek het kleinste van het grootste getal af. Keer terug naar stap 2. Bij deze procedure wordt in maximaal zeven stappen het getal 6174 verkregen, en daarna komen er geen nieuwe getallen meer bij. De procedure eindigt vanwege 7641 − 1467 = 6174. Neem bijvoorbeeld het startgetal 5342.
5432 - 2345 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174
Als na de aftrekking een getal van minder dan 4 cijfers ontstaat, moet(en) daar nul(len) voor gezet worden opdat er weer een getal van 4 cijfers ontstaat. Dus 999 wordt geschreven als 0999. Neem bijvoorbeeld het startgetal 1000:
1000 - 0001 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
De enige getallen van 4 cijfers waarvoor deze procedure niet werkt zijn herhaalde cijfers zoals 3333, die na één iteratie de waarde 0 geven.
Deze oefening behoort tot de reeks “Werken met lists”, dus maak gebruik van het datatype list om deze oefening op te lossen.
Vraag aan de gebruiker om een getal van 4 cijfers in te geven, waarvan de cijfers niet allemaal gelijk zijn. Vertrekkend van dit getal doorloopt je programma de stappen hierboven uitgelegd, totdat het getal 6174 wordt bereikt. Je houdt via een teller bij hoeveel stappen er nodig zijn en print per doorloop de volgende tekst (zie ook het voorbeeld):
#: startgetal -> aflopend - oplopend = resultaat (aangevuld met nullen)
Als je als startgetal 6174 ingeeft, dan doorloop je 1x de logica en drukt het resultaat af om aan te tonen dat 6174 inderdaad resulteert in 6174.
1000
1: 1000 -> 1000 - 0001 = 0999
2: 0999 -> 9990 - 0999 = 8991
3: 8991 -> 9981 - 1899 = 8082
4: 8082 -> 8820 - 0288 = 8532
5: 8532 -> 8532 - 2358 = 6174
6174
1: 6174 -> 7641 - 1467 = 6174