Sformatuj kod i Popraw błędy, Mogłeś chociaż jakiś debug print wstawić, żeby się dowiedzieć, co to to magiczne ((tab[i])[0])
. Chociaż nie wiem czy to podejście w ogóle będzie działać.
"jak mam napisać pętlę to tej tablicy, żeby porównać ze sobą wybrany zbiór" - co to znaczy? Zbiór dom
ma być porównywany z wybranym zbiorem z listy, ze wszystkimi? Gdyby Twój kod zadziałał, to porównałby dom
z pierwszym zbiorem pierwszej podlisty i jak jest podzbiorem to dodałby do niego drugi zbiór; i tak dalej aż do momentu, gdy nie będzie podzbiorem (wtedy break
). Poza tym Masz paskudnego buga, raz Traktujesz i
, jako element tablicy, a raz jako indeks. Spróbuj chociaż:
for i, elem in enumerate(tab):
To jeden z moich pierwszych programów w ogóle i niestety nie widzę co mam źle. :(
Generalnie robię projekt, żeby wypisać domknięcia bazy danych i mam takie wejście:
wejscie:
A,B,C,QX
3
A->B
XQ->C
B,C->A
Wyjście:
Domknięcia:
{A}+ = {A, B}
{B}+ = {B}
{C}+ = {C}
{QX}+ = {C, QX}
{A, B}+ = {A, B}
{A, C}+ = {A, B, C}
{B, C}+ = {A, B, C}
{A, QX}+ = {A, B, C, QX} <- Minimalny klucz kandydujący
{B, QX}+ = {A, B, C, QX} <- Minimalny klucz kandydujący
{C, QX}+ = {C, QX}
{A, B, C}+ = {A, B, C}
{A, B, QX}+ = {A, B, C, QX} <- Nadklucz
{A, C, QX}+ = {A, B, C, QX} <- Nadklucz
{B, C, QX}+ = {A, B, C, QX} <- Nadklucz
{A, B, C, QX}+ = {A, B, C, QX} <- Nadklucz
Mój kod https://pastebin.com/nt0aW8b4
To jest jeszcze w proszku jak widać. Miałam zamysł taki, żeby to, co jest pomiędzy strzałką, było zbiorem i później robić operacje na zbiorach. t[i][0] to potencjalne odwołanie do lewej części strzałki. Jak mam to ogarnąć?