Elementi distinti della Matrice

di il
2 risposte

Elementi distinti della Matrice

Scrivere una funzione che data una matrice A restituisce True se la matrice ha tutti gli elementi distinti e False altrimenti.

Il mio codice è:
def unique(M):
r=len(M)
c=len(M[0])
check = True
for i in range(r):
for j in range(c):
if M[j]!=M[j]:
return False
return True

Torna con M =[[2,2],[3,4]]->False
non torna con M = [[1,2],[3,4]] elementi distinti mi da False.
Non so dove ho sbagliato nel codice ma non mi torna.
Se ci dovesse essere qualcuno che mi potrebbe aiutare mi sbloccherebbe questo problema…

2 Risposte

  • Re: Elementi distinti della Matrice

    Spero di non essere troppo tardi.

    Nel tuo codice ci sono alcune parti confuse:
    if M[j]!=M[j]:
    questo sarà sempre valutato come falso, stai confrontando lo stesso elemento.
    check = True
    check non lo usi da nessuna parte.

    Al di là di questo, in realtà il tuo codice non funziona perchè non adotta alcuna strategia per il controllo dei 'doppioni'; prima di scrivere qualsiasi cosa dovresti, secondo me, descrivere come lo faresti tu a mano.
    Ad esempio, io prenderei ad uno ad uno gli elementi e verificherei, per ciascuno, se nel resto della riga o nelle righe sottostanti c'è almeno un doppione.
    Quindi la traduzione in codice:
    def unique(M):
        r = len(M)
        c = len(M[0])
    
        for i in range(r):
            for j in range(c):
                # prendiamo in considerazione l'elemento M[i][j]
                test = M[i][j]
    
                for k in range(j+1,c):      # controlla con il resto della riga
                    if test==M[i][k]:
                        return False
    
                for z in range(i+1, r):  # controlla con le righe sottostanti
                    for k in range(c):
                        if test == M[z][k]:
                            return False
        return True
    
    m = [
            ['a','b'],
            ['c','d'],
            ['f','e']
        ]
    
    result = unique(m)
    print(result)
  • Re: Elementi distinti della Matrice

    candaluar ha scritto:


    Spero di non essere troppo tardi.

    Nel tuo codice ci sono alcune parti confuse:
    if M[j]!=M[j]:
    questo sarà sempre valutato come falso, stai confrontando lo stesso elemento.
    check = True
    check non lo usi da nessuna parte.
    In realtà il problema è che non avendo egli usato il tag CODE, la M[ i][j] è stata trasformata in italic M[j]
Devi accedere o registrarti per scrivere nel forum
2 risposte