2. Inlämningsuppgift 1 Kaprekar

Programmeringsteknik

Hoppa till: navigering, sök
       Teori          Övningar          Kaprekar      

Kaprekar

I den första inlämningsuppgiften ska du skriva och skicka in ditt första pythonprogram.

Den indiske matematikern Dattaraya Ramchandra Kaprekar upptäckte att talet 6174 har en märklig egenskap. Välj ett fyrsiffrigt tal där de fyra siffrorna inte alla är likadana (t.ex 8082). Om man ordnar siffrorna från den största till den minsta så får vi ett nytt tal a (i detta fall 8820). Ordna sedan siffrorna från den minsta till den största så får vi ett annat tal b (i detta fall 0288). Beräkna nu differensen c=a−b=8820−0288=8532. Vi gör samma sak en gång till med det nya talet:

8532−2358=6174

Det märkliga är att denna process alltid kommer till 6174 förr eller senare. Om vi fortsätter får vi nämligen:

7641−1467=6174

Uppgiften består i att skriva ett program som givet ett ingångstal beräknar hur många iterationer det krävs innan ovanstående process kommer till 6174.

Indata består av ett fyrsiffrigt tal. Utdata ska vara antalet iterationer som krävs för att genom ovanstående process komma fram till talet 6174 från det angivna talet.

För att sortera ett fyrsiffrigt tal så kan du använda dig av följande kod:

 
tal ='3712'
lista = sorted(tal) 
print(lista)

# Om ovan körs blir utskriften: ['1', '2', '3', '7']  

sorted(tal, reverse=True)

# Om ovan körs blir utskriften: ['7', '3', '2', '1']

large = "".join(sorted(tal, reverse=True))
print(large)

# Om ovan körs blir utskriften:'7321'

Programmet ska finnas i en fil som innehåller ditt namn i titeln, enligt formatet: Förnamn_efternamn_1.py. Skriv också in ditt namn i din pythonfil, följ den här mallen:

# Programmeringsteknik webbkurs KTH inlämningsuppgift 1.
# <Ditt namn>
# <Datum>
# <Kort beskrivning av vad programmet gör>

<Programkod>


Innan du skickar in programmet så ska du testa att det fungerar, fundera särskilt på om du hanterar talen 0001 och 6174 korrekt (varför är de luriga?).

Exempel på output:

Ange ett fyrsiffrigt tal: 1121
Det tog 5 iterationer att nå 6174.

Ange ett fyrsiffrigt tal: 6174
Det tog 0 iterationer att nå 6174.

Glöm inte att kommentera din kod, se Att kommentera.

(I den här uppgiften finns det inget krav på vad som ska hända om användaren matar in något annat än ett heltal. Om du vill så får du dock gärna försöka upptäcka felaktig inmatning och skriva ut lämpliga felmeddelanden.)


När du har testat ditt program grundligt så går du till kursens förstasida. Under rubriken Examination hittar du Inlämningsuppgift 1 och där kan du lämna in filen Förnamn_efternamn_1.py. Observera att filen måste vara i .py-format, vilket den automatiskt blir om du skapar den med hjälp av IDLE. Detta för att vi ska kunna prova och testköra ditt program.

Kom ihåg att denna uppgift ska göras individuellt, att samarbeta eller kopiera någon annans kod betraktas som fusk. Denna uppgift kommer att plagiatkontrolleras. Alla träffar vi får leder till disciplinnämndsanmälningar.

KONTROLL INNAN INLÄMNING:
* Har du testat ditt program?
* Ser din körning ut som exemplen?
* Har du namngivit dina variabler väl?
* Har du kommenterat din kod?
* Har du undvikit kodupprepning (d.v.s att du inte har samma kod flera gånger)?