Wpis z mikrobloga

#programowanie #algorytmy


Mam sobie macierz liczb, taką że te same wartości występują jedynie we własnym sąsiectwie i mogą wypełnić jakąś część wiersza lub kolumny, ale nie mogą wypełniać tak wiersza, jak i kolumny na raz, a wiec np. ta macierz spełnia te warunki:

| 1 2 2 |
| 1 3 4 |
| 1 5 5 |

A ta nie:

| 1 2 2 |
| 1 1 3 |
| 1 4 2 |

(bo 1 wypełnia całą kolumnę i jednocześnie część wiersza, a 2 jest w dwóch miejscach)

No i teraz chcę stworzyć layout w GUI na podstawie tych wartości. Jest sobie klasa QGridLayout i ona przyjmuje po prostu widgety zajmujące jakąś ilość kolumn lub wierszy. W przypadku tej pierwszej macierzy, layout będzie wyglądał tak jak na obrazku: widget nr 1 zajmie całą kolumnę na lewo itd.

Pytanie brzmi: jak iterować po tej macierzy, żeby cały proces nie był jednym wielkim kłębkiem gównokodu, bo tak to się skończy gdy się w ciemno teraz za to zabiorę...
Dijuna - #programowanie #algorytmy
SPOILER
Mam sobie macierz liczb, taką że te same...

źródło: comment_CwKCyCX39ZcYxPjKx16J237fSQw3gnea.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dijuna: 1. sprawdź czy macierz spełnia warunki (naiwnie wystarczy - w dwóch krokach wiesz czy sprawdzasz wiersze, czy koumny) 2. jeżeli macierz jest spoko, możesz naiwnie grupować (np.: (a1,b1) -> (a2,b2) definiuje jakiś widget w Twoim QGridLayout))

btw: robienie tego na widgetach wydaje się trochę overkillem, nie prościej jakiś panel do rysowania + obsługa myszy? (zależy od wielkości macierzy)
  • Odpowiedz
@that_ugly_dude: to tylko zapis umiejscowienia widgetów. Mam takie puzzle które sobie user układa jak chce, i później klika i je rozszeża w wybranych kierunkach, tworząc układ elementów. Macierz spełnia te warunki z samego sposobu jej tworzenia i nie moze być inaczej, funkcja sprawdzająca zresztą już istnieje i wykrywa błędy które tam z kody wprowadzę ręcznie (zabezpieczyłem się, bo zapisuję te macierze do bazy danych gdzie mogłyby teoretycznie ulec uszkodzeniu :P).
  • Odpowiedz