def zaplat(castka, pouzito=[]): if castka >= 5 and (pouzito==[] or pouzito[-1] >= 5): # pouziju 5 zaplat(castka - 5, pouzito + [5]) if castka >= 2 and (pouzito==[] or pouzito[-1] >= 2): # pouziju 2 # zaplat(castka - 2, pouzito + [2]) pouzito.append(2) zaplat(castka - 2, pouzito) pouzito.pop() if castka >= 1: # pouziju 1 zaplat(castka - 1, pouzito + [1]) if castka == 0: print(*pouzito, sep="+") return # zaplatOmezene(6, {5: 0, 2: 2, 1: 15}) def zaplatOmezene(castka, kdispozici, pouzito=[]): if castka >= 5 and (pouzito==[] or pouzito[-1] >= 5) and kdispozici[5] >= 1: # pouziju 5 pouzito.append(5) kdispozici[5] -= 1 zaplatOmezene(castka - 5, kdispozici, pouzito) kdispozici[5] += 1 pouzito.pop() if castka >= 2 and (pouzito==[] or pouzito[-1] >= 2) and kdispozici[2] >= 1: # pouziju 2 # zaplat(castka - 2, pouzito + [2]) pouzito.append(2) kdispozici[2] -= 1 zaplatOmezene(castka - 2, kdispozici, pouzito) kdispozici[2] += 1 pouzito.pop() if castka >= 1 and kdispozici[1] >= 1: # pouziju 1 pouzito.append(1) kdispozici[1] -= 1 zaplatOmezene(castka - 1, kdispozici, pouzito) kdispozici[1] += 1 pouzito.pop() if castka == 0: print(*pouzito, sep="+") return # zaplat(6) # zaplatOmezene(12, {5: 1, 2: 2, 1: 15}) def zaplatOmezene2(castka, kdispozici, pouzito=[]): for mince in kdispozici: if castka >= mince and ( pouzito==[] or pouzito[-1] >= mince ) and kdispozici[mince] >= 1: # pouziju mince pouzito.append(mince) kdispozici[mince] -= 1 zaplatOmezene2(castka - mince, kdispozici, pouzito) kdispozici[mince] += 1 pouzito.pop() if castka == 0: print(*pouzito, sep="+") return print(zaplatOmezene2(17, {7: 2, 3: 5, 2: 10} )) a = "Ahoj" b = a.lower() print(b)