giovedì 9 gennaio 2025

PYTHON - Funzione per calcolare le permutazioni di una lista

Nel risolvere il codice dell'Advent of Code del 2015 (nella fattispecie, il puzzle del giorno 13), mi sono imbattuto nel problema di ottenere tutte le permutazioni possibili di una lista.

L'algoritmo è abbastanza facile da ricavare, però sviluppandolo in python si possono sfruttare dei meccanismi di manipolazione delle liste peculiari del linguaggio.

Questo è un codice funzionante per ottenere le permutazioni (senza l'utilizzo della libreria itertools):
inputList = ["a", "b", "c", "d"]

def getPermutations(listToP):
    permutations = []

    if len(listToP) == 1:
        return [listToP]

    for i, el in enumerate(listToP):
        remaining_el = listToP[:i] + listToP[i+1:]
        subs = getPermutations(remaining_el)
        for p in subs:
            permutations.append([el] + p)

    return permutations

print(getPermutations(inputList))
Da notare che questa versione utilizza la ricorsione.

Nessun commento:

Posta un commento