Hej, dobierajka wcale nie jest tak mocno skomplikowana w zaprogramowaniu. Bardziej czasochłonna jest w zgromadzeniu bazy wiedzy odpowiedniej, ale to można przerzucić na użytkowników, dając im odpowiedni interfejs
Co do implementacji, wystarczy dorzucić dodatkową tabelę, łączącą gatunki parami:
id
id_gat1
id_gat2
waga
i podobierać parami gatunki, które mogą ze sobą żyć, dodając dodatkowo wagę, określającą jak bardzo dane gatunki są dla siebie odpowiednie. W momencie rozpoczęcia przeszukiwania tych par, musisz wiedzieć, jakie gatunki możesz brać pod uwagę, więc potrzebna będzie minimalna długość zbiornika dla danego gatunku, optymalną wielkość haremu oraz wielkość rewiru dla 1 haremu. Użytkownik w dobierajce podaje wielkość zbiornika i opcjonalnie jakiś gatunek "must have". System ocenia, czy do danego baniaka wejdzie coś więcej, niż "must have" i jeżeli tak, to leci po parach wg. wag malejąco, wyszukując pasujące gatunki aż do zapełnienia zbiornika. Można tu zaprogramować łażenie po drzewku binarnym i podanie kilku różnych propozycji obsad.
Trzeba dodać jeszcze jakiś ogranicznik, zwiększający zapełnienie zbiornika dodatkowo po dodaniu każdego nowego gatunku bardziej agresywnego i pewnie jeszcze kilka różnych dodatkowych ograniczeń, które wyjdą "w praniu".
Użytkownicy dobieraliby gatunki w pary, przeglądając bazę gatunków. Waga rosłaby, gdy dana para będzie miała więcej dodań. A ja to już chyba powinienem kończyć na dziś, bo fantazja mi się włącza