Prokrustovi nizi

Prokrustovi nizi

Avtor: Daniel Prša

Besedilo naloge

Zgodbo o Prokrustu si lahko prebereš na spodnji povezavi:

Zgodba o Prokrustu

Naloga pa pravi:

Sestavi funkcijo, ki bo za niz s in celo število n sestavila niz dolžine n. Če je dolžina niza s večja od n, spusti zadnjih nekaj znakov, sicer pa nizu s dodaj še ustrezno število znakov '+' na konec.

Naloge bi se lahko lotili na dva načina:

Rešitev 1

Rešitev 2

Rešitev 1: pogojni stavek in zanka

Najprej preverimo dolžino niza.

    dolžinaNiza = len(niz)

Če je dolžina niza daljša ali enaka število n, uvedemo nov prazen niz


    if dolžinaNiza >= število:
        novNiz = ''

Nato bomo v zanki šli skozi niz do indeksa danega števila in nov niz napolnili z znaki do danega števila n.

    ind = 0
    while ind < število:
        novNiz = novNiz + niz[ind]

V nasprotnem primeru pa uvedemo še eno zanko, kjer bomo danemu nizu dodajali na konec znake '+' do števila n.

    while dolžinaNiza < število:
        niz = niz + '+'


(prokrust1.PNG)
Prokrustovi nizi 1

Rešitev 1: pogojni stavek in zanka

Preverimo delovanje programa v lupini:

Rešitev 2: rezanje in stikanje

Najprej primerjamo dolžino niza in dano število.

Če je dano število krajše (oz. enako) od dolžine sledi rezanje niza s od indeksa nič do danega števila n.

    novNiz = s[0:n]


V nasprotnem primeru pa moramo vedeti, koliko plusov bomo dodali.

Vpeljemo spremenljivko plusi. Najprej dobimo razliko števila in dolžine niza, ki jo nato pomnožimo s plusi:

    plusi = (n - len(s)) * '+'


Celoten program bi izgledal takole:

(prokrust2.png)
Prokrustovi nizi

Rešitev 2: rezanje in stikanje

Preverimo še to rešitev v lupini:

0%
0%