Pytanie o Algorytm

0

Witam,

Piszę aplikacje webowe jednak do tej pory nie tworzyłem jakiś rozbudowanych algorytmów. Poniżej przedstawiam to co chcę osiągnąć. Zastanawiam się jak do tego podejść. Wszelkie sugestie mile widziane. Biorę pod uwagę zlecenie tego komuś tylko nie bardzo wiem gdzie najlepiej szukać takich Osób.

Mamy np. 63 pola składające się na 3 wiersze i 21 kolumn. W każdym możliwym polu ma być dodany element 1,2 lub 3.

Warunki nr 1:
Mniejszy element nie może występować zaraz po większym chyba, że dzieli ich wolne pole (_). Przykład:

Dobrze: 11111 lub 11223 lub 22_111
Źle: 22111

Warunek nr 2:
W przeciągu 7 kolejnych pól w dowolnym miejscu mają być minimum 2 wolne pola obok siebie chyba, że pomiędzy wolnymi polami są różne
elementy wtedy wystarczy 1 wolne pole.

Warunek nr 3:
Na jeden wiersz ma przypadać max. 15 elementów rozmieszczonych w miarę równomiernie w obrębie 21 pól.

Warunek nr 4:
Wiersze powinny posiadać w miarę równomiernie rozłożone elementy. (każdy wiersz ma podobną ilość elementów 1,2 i 3)

Cel:
Każda kolumna powinna posiadać każdy z elementów. Jeżeli nie wszędzie to możliwe to ułożyć tak jak jest najbardziej optymalnie.

0

Wygląda na pytanie z jakiegoś SPOJ-a, hackerrank lub podobnego.
Możesz dostarczyć linka? Bedzie to lepiej opisane.

Czego już próbowałeś?

0
MarekR22 napisał(a):

Wygląda na pytanie z jakiegoś SPOJ-a, hackerrank lub podobnego.
Możesz dostarczyć linka? Bedzie to lepiej opisane.

Czego już próbowałeś?

Jakiego linka? To jest na potrzeby aplikacji, którą piszę.

Próbowałem zwykłych pętli i różnych kombinacji ale to chyba nie tędy droga bo tych kombinacji byłoby duuużo. Stworzyć losową taką tabele bazując na tych warunkach to nie problem. Mi zależy aby stworzyć taką tabele aby cel był spełniony albo jak najbliższy spełnienia. Dodam, że powyższym przykładzie cel nie może zostać spełniony (chociażby przez limit 15) ale to tylko przykład. Liczba kolumn, wierszy jak i elementów jest umowa (zmienne).

Jedynie co mi do głowy przychodzi to pętla po polach i randomizacja przy każdym podejściu. Na koniec wybór najlepiej rozpisanej tabeli z pośród np. 1000. Nie jest to elegancka metoda :)

Może ja powinienem matematyka szukać a nie programistę?:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1