# Lezione 17 - Esercizio 4 - Regole nascoste
# Data una lista vuota l = [], scrivere un programma che la riempia con ciascuna
# delle sequenze di valori seguenti, dopo aver compreso la regola di generazione
# della sequenza (se esiste).
# I. 1 2 3 4 5 6 7 8 9 10
# II. 0 2 4 6 8 10 12 14 16 18 20
# III. 0 0 0 0 0 0 0 0 0 0
# IV. 0 1 0 1 0 1 0 1 0 1

def genera_sequenze() -> dict[str, list[int]]:
    """
    Genera le asequenze richieste dalla consegna secondo le regole specificate.

    :return: dizionario con le sequenze
    """

    sequenze = {}

    # Sequenza I: numeri incrementali (+1)
    sequenza_i = []
    for i in range(1, 11):
        sequenza_i.append(i)
    
    sequenze['I'] = sequenza_i

    # Sequenza II: numeri pari
    sequenza_ii = []
    for i in range(0, 21, 2):
        sequenza_ii.append(i)
    
    sequenze['II'] = sequenza_ii

    # Sequenza III: tutti zero
    sequenza_iii = []
    for _ in range(10):
        sequenza_iii.append(0)
    
    sequenze['III'] = sequenza_iii

    # Sequenza IV: 0 e 1 alternati
    sequenza_iv = []
    for i in range(10):
        sequenza_iv.append(i % 2)  # 0%2=0, 1%2=1, 2%2=0, 3%2=1, 4%2=0, 5%2=1, 6%2=0, 7%2=1, 8%2=0, 9%2=1

    sequenze['IV'] = sequenza_iv

    return sequenze

def main():
    """
    Programma principale per generare e stampare le sequenze.
    """
    sequenze = genera_sequenze()

    print("Sequenze generate:")
    for codice_sequenza, sequenza in sequenze.items():
        print(f"Sequenza {codice_sequenza}: {sequenza}")

if __name__ == "__main__":
    main()