gvnnz / tris

1 stars 0 forks source link

Nuova funzione `all_equal` per verificare che una lista abbia tutti valori uguali #7

Closed gvnnz closed 7 months ago

gvnnz commented 8 months ago

@Ace-Miky crea una funzione all_equal che prende in input una lista numerica e un intero symbol_value (che può essere 1 o 2 e che corrisponde al valore del simbolo o o x). La funzione ritorna True se la lista contiene tutti valori uguali a symbol_value. Esempio:

list_one = [1,1,1,1,1]
list_two = [1,2,0,0,1]
all_equal(list_one, 1) # True
all_equal(list_one, 2) # False
all_equal(list_two, 1) # False
all_equal(list_two, 2) # False

La useremo per capire se c'è una vittoria con la issue #9.

gvnnz commented 7 months ago

@Ace-Miky ho aggiornato questa issue, useremo questa funzione poi per la #9.

Ace-Miky commented 7 months ago

@gvnnz


def all_equal(list, symbol_value):
    count = 0
    if symbol_value == 1:
        symbol_value = 1 # opzionale?
    elif symbol_value == 2:
        symbol_value = 2 # opzionale?
        for element in list:
            if count < len(list) and element == symbol_value:
                count = count + 1
            elif count == len(list) and element == symbol_value:
                return True
    return False

def all_equal(list, symbol_value):
    count = 0
    if symbol_value == 1:
        for element in list:
            if count < len(list) and element == symbol_value:
                count = count + 1
            elif count == len(list) and element == symbol_value:
                return True
    if symbol_value == 2:
        for element in list:
            if count < len(list) and element == symbol_value:
                count = count + 1
            elif count == len(list) and element == symbol_value:
                return True
    return False
Ace-Miky commented 7 months ago

La prima e' quella piu' corretta? va bene?

gvnnz commented 7 months ago

@Ace-Miky consideriamo la prima, ti lascio dei commenti su quella.

  1. All'inizio:
    symbol_value = 1 # opzionale?
    ...
    symbol_value = 2 # opzionale?

    Sì sono superflui. Se symbol_value è 1, non serve settarla di nuovo a 1 (ovviamente vale anche se è 2). Qui comunque non farei questo controllo. Stiamo generici, la funzione può prendere in input qualsiasi numero come symbol_value. Non pensare al nostro gioco, penso sia meglio fare una funzione generica (poi ne discutiamo dal vivo);

  2. La funzione non sembra fare quello che dovrebbe. Esempio:
    my_list = [1,1,1,1,1,1]
    all_equal(my_list, 1) # False (dovrebbe essere True)

    Non ho capito bene la logica del count? Forse l'errore è lì. Me la spieghi quando ci vediamo.

Ace-Miky commented 7 months ago

@gvnnz Questa funziona


my_list = [1, 1, 1, 1, 1, 1]
symbol_value = 1

def all_equal(my_list, symbol_value):
    for element in my_list:
        if element != symbol_value:
            return False
        else:
            continue
    return True
gvnnz commented 7 months ago

@Ace-Miky ottimo. La parte dell'else è superflua perché il ciclo continua comunque.