Ništa nije teško, kad rešiš :)
Ali zato dok ne rešiš, muke Isusove.
Mislim, ideja za rešenje mi je bila jasna relativno brzo,
ali sam celo popodne lupao glavu oko implementacije.
No, mislim da sam došao do rešenja:
Code:
niz = [3, 7, 11, 21, 25, 38, 41, 95, 118, 129, 144, 153, 174]
niz_2 = niz.copy()
broj = 138
while len(niz) != 1:
mid = int(len(niz)/2)
if broj > niz[mid]:
niz = niz[mid:]
else:
niz = niz[:mid]
br_niz = niz.pop(0)
indx = niz_2.index(br_niz)
if broj > br_niz:
niz_2.insert(indx + 1, broj)
elif broj < br_niz:
niz_2.insert(indx - 1, broj)
else:
niz_2.insert(indx - 1, broj) #ovo u slučaju da je zadati broj isti kao i neki u nizu
print(niz_2)
Dosta sam vremena izgubio oko while funkcije, jer sam prvo stavio
while len(niz) == 1:
misleći da će se izvršavati, dok len ne postane 1. Ali, naravno, ništa se nije dešavalo.
Posle n pokušaja i očajanja :) uzmem knjigu i pročitam o while funkciji, a tamo lepo piše da se izvršava
sve dok uslov nije ispunjen. I onda mi sine šta treba da menjam.
Imao sam takođe muku kad na kraju dobijem listu od jednog člana, recimo niz = [129], kako da vrednost
tog člana pretvorim u integer, da bih mogao da dobijem njegov index. I onda natrčim na niz.pop funkciju. Zlata vredi! :)
Eto tako. Ovo je rudarski posao. Korak po korak, kao da kopam tunel i pipam u mraku.
Ali zato kad ga prokopaš i na kraju te obasja svetlo rešenja! :))) Ništa lepše!