Avainkoodissa on neljä numeroa väliltä . Koodissa ei esiinny kahta kertaa samaa numeroa.
Annettuna on koodin kuvaava merkkijono. Jokainen merkki on joko koodissa esiintyvä numero tai merkki ?
, joka tarkoittaa tuntematonta numeroa. Tehtäväsi on muodostaa lista mahdollisista koodeista.
Esimerkiksi kun merkkijono on 24?5
, mahdolliset koodit ovat 2415
, 2435
, 2465
, 2475
, 2485
ja 2495
.
Toteuta tiedostoon keycode.py
funktio find_codes
, jolle annetaan parametrina koodin kuvaus merkkijonona. Funktion tulee palauttaa lista, jossa on pienimmästä suurimpaan kaikki koodit merkkijonoina.
Funktion tulee toimia tehokkaasti kaikissa tapauksissa.
def find_codes(pattern): # TODO if __name__ == "__main__": codes = find_codes("24?5") print(codes) # ['2415', '2435', '2465', '2475', '2485', '2495'] codes = find_codes("1?2?") print(codes[:5]) # ['1324', '1325', '1326', '1327', '1328'] print(len(codes)) # 42 codes = find_codes("????") print(codes[:5]) # ['1234', '1235', '1236', '1237', '1238'] print(len(codes)) # 3024