6174
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 9990:
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.
Opgave
In deze oefening is het de bedoeling dat bij een gegeven startgetal, een rijtje van (maximaal 7) verschillen uitgeschreven wordt. We doen dit in verschillende stappen.
- Programmeer de functie splits().
Deze functie heeft één parameter: een getal van 4 cijfers die niet allemaal gelijk zijn aan elkaar.
Je geeft de 4 cijfers uit dit getal van links naar rechts terug als afzonderlijke cijfers in een tuple.
- De functie oplopende_cijfers vraagt 4 cijfers en geeft deze cijfers afzonderlijk
terug in oplopende volgordein een tuple.
- Om van vier cijfers een getal met oplopende cijfers en aflopende cijfers te maken, programmeer je
op_af_getallen.
Deze functie vraagt 4 cijfers in oplopende volgorde en geeft twee strings terug (in een tuple): eerst het getal met oplopende cijfers, dan het getal met aflopende cijfers.
De twee getallen moet je in string-formaat teruggeven om te vermijden dat eventuele voorloopnullen verloren gaan.
- Nadat je het oplopend en aflopend getal bekomen hebt, programmeer je de functie verschil.
De eerste parameter van deze functie is het getal met aflopende cijfer, de tweede parameter het getal met oplopende cijfers.
De functie geeft een string terug met het verschil van de tweede getallen. Bijvoorbeeld '5432 - 2345 = 3087'
- Ten slotte geef je aan de functie kaprekar. De parameter van deze functie is het startgetal.
De functie geeft één string terug met daarin, gesplitst over verschillende regels, alle verschillen tot de constante van Kaprekar bereikt wordt.
Je mag ervan uitgaan dat 6174 nooit het startgetal is.
Voorbeeld
Input
Het programma leest een natuurlijk getal van 4 cijfers in
5342
Output
Het programma schrijft de verschillen uit totdat je de constante van Kaprekar bereikt hebt:
5432 - 2345 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174