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)