Annettuna on lista, jossa on kirjan sivunumeroja. Tehtäväsi on muodostaa merkkijono, joka esittää sivuvälit tiiviisti.
Jos listassa on sivunumerot väliltä a \dots b, sivuväli tulee esittää muodossa a–b. Jos listassa on yksittäinen sivunumero, se tulee esittää sellaisenaan. Jos listassa on useita sivuvälejä, ne tulee ilmoittaa järjestyksessä pilkuilla erotettuina. Toistuvat sivunumerot tulee poistaa.
Esimerkiksi listan [3,2,9,4,3,6,9,8] haluttu esitystapa on 2-4,6,8-9
.
Toteuta tiedostoon pages.py
funktio create_string
, jolle annetaan parametrina sivunumerot listana. Funktion tulee palauttaa yllä olevan kuvauksen mukainen merkkijono.
Sinun tulee toteuttaa funktio niin, että se ei muuta sille annetun listan sisältöä. Tehtäväpohjan viimeinen testi näyttää listan sisällön funktion kutsumisen jälkeen, jolloin sen tulee olla sama kuin ennen funktion kutsumista. Sama vaatimus on muissakin tämän viikon tehtävissä.
def create_string(pages): # TODO if __name__ == "__main__": print(create_string([1])) # 1 print(create_string([1, 2, 3])) # 1-3 print(create_string([1, 1, 1])) # 1 print(create_string([1, 2, 1, 2])) # 1-2 print(create_string([1, 6, 2, 5])) # 1-2,5-6 print(create_string([1, 3, 5, 7])) # 1,3,5,7 print(create_string([1, 8, 2, 7, 3, 6, 4, 5])) # 1-8 print(create_string([3, 2, 9, 4, 3, 6, 9, 8])) # 2-4,6,8-9 pages = [3, 2, 1, 3, 2, 1] print(create_string(pages)) # 1-3 print(pages) # [3, 2, 1, 3, 2, 1]