Sinulla on laatikoita, joista jokaisella on tietty koko. Sinulle annetaan yksi kerrallaan tuotteita, ja sinun tulee valita kullekin tuotteelle pienin riittävän suuri laatikko. Samaa laatikkoa voi käyttää vain kerran.
Esimerkki: Laatikoiden koot ovat ja sinulle tulee tuotteita seuraavasti:
- Tuotteen koko on . Valitset sille laatikon kokoa .
- Tuotteen koko on . Valitset sille laatikon kokoa .
- Tuotteen koko on . Valitset sille laatikon kokoa .
- Tuotteen koko on . Tuotteelle ei löydy laatikkoa.
- Tuotteen koko on . Valitset sille laatikon kokoa .
Toteuta tiedostoon nextbox.py
funktio find_boxes
, jolle annetaan listoina laatikoiden koot sekä tuotteiden koot käsittelyjärjestyksessä. Funktion tulee palauttaa lista, joka ilmoittaa kullekin tuotteelle laatikon koon tai luvun , jos sopivaa laatikkoa ei löytynyt.
Funktion tulee toimia tehokkaasti silloinkin, kun molemmat listat ovat suuria. Tehtäväpohjan viimeinen funktiokutsu testaa tällaista tilannetta.
def find_boxes(boxes, products): # TODO if __name__ == "__main__": print(find_boxes([4, 4, 6, 8], [5, 5, 4, 6, 1])) # [6, 8, 4, -1, 4] print(find_boxes([1, 2, 3, 4], [1, 1, 1, 1, 1])) # [1, 2, 3, 4, -1] print(find_boxes([2, 2, 2, 2], [1, 1, 1, 1, 1, 1])) # [2, 2, 2, 2, -1, -1] print(find_boxes([1, 1, 1, 1], [2, 2])) # [-1, -1] boxes = [] products = [] for i in range(10**5): boxes.append(i % 100 + 1) products.append(3 * i % 97 + 1) result = find_boxes(boxes, products) print(result[42]) # 30 print(result[1337]) # 35 print(result[-1]) # 100