Wpis z mikrobloga

@MamCieNaHita: no całość ma 150 warunków kodu z czego jakas połowa to puste linie i komentarze, te warunki sa dosyć proste. sprawdzam w którym miejscu tabeli jestem. następnie sprawdzam wszystkie poprzednie, jezeli liczba sie powtorzyła to losuj dalej i tak w kółko
  • Odpowiedz
@patrolez: cóż, jak naucze sie podejscia obiektowego to go może użyje, ale narazie mi sie spieprzył kod na wskaźnikach więc nie wiem czy używanie obiektowego podejścia będzie dobrym pomysłem
  • Odpowiedz
@patrolez: nie znam wielu tagów na wykopie :P
możliwe, poprzednia wersja programu nie dość że działała, to była trochę mniejsza (albo porownywalna) ale była kompletnie bez funkcji, i potencjalnie była sporo wolniejsza bo nie miała ani jednego wskaźnika na których chce to teraz zrobić, też w ramach nauki
  • Odpowiedz
@RedveKoronny: nie rób tego, jeżeli twoim celem jest nauka wskaźników.

Nowoczesny C++ to praktycznie unikanie gołych wskaźników gdzie się da.
std::vector to jedno z obejść i ułatwień - nie na czas nauki wskaźników.
  • Odpowiedz
@RedveKoronny: znaczy, żeby zrozumieć to czego się używa w nowoczesnym C++, to i tak wypadałoby znać arytmetykę wskaźników - że każdy typ ma swój własny rozmiar itp.

Innymi słowy twój kod na twoim etapie nauki jest super!

Nowoczesny C++ to przede wszystkim tzw. sprytne wskaźniki, których mechanizm opiera się ściśle o zasięg/cykl-życia (scope) oraz tzw. podejście RAII. C++ rozróżnia się też od C przez istnienie
  • Odpowiedz
@patrolez: dzięki wielkie, zainteresuje się tym :)
a dałbyś radę mi powiedzieć co jest z moim kodem warunki CheckSquares, CheckRows i CheckColumn nie mogą zostać spełnione? bo z tego co widzę warunki są identyczne co w pierwszej wersji programu https://pastebin.com/kEAM3YbY która zwracała wypełnioną tabelę w mniej niż sekundę (raz sie udało w 0 cykli, zwykle potrzebuje ok. 2000 cykli)
  • Odpowiedz
@RedveKoronny: No dobra jak przekroczysz 1000 iteracji to cofasz się do początku, co jest bardzo losowe i oznacza to, że praktycznie musisz wylosować całą planszę prawidłową inaczej twój algorytm nie zadziała.

Jedyna różnica jest taka, że w CheckSquares ustawiasz nową tablicę, a nie zapisujesz random do starej.

Backtracking polega na tym, że wstawiając kolejne pole, jeżeli sprawdzisz wszystkie możliwości, to cofasz się do poprzedniego wstawienia i wybierasz następną możliwą opcję,
  • Odpowiedz