Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Najefikasniji algoritam za ovu situaciju

[es] :: Art of Programming :: Najefikasniji algoritam za ovu situaciju

[ Pregleda: 2744 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Arnie
localhost
Sam svoj gazda
Beograd, Srbija

Član broj: 329038
Poruke: 43



+3 Profil

icon Najefikasniji algoritam za ovu situaciju06.04.2016. u 12:57 - pre 38 meseci
Radi se o sledećem - pišem u JavaScript-u jednu matematičku igru koja se igra na tabeli 5x5. Igra funkcioniše tako što se oba igrača dogovore ko će prvi da započne igru. Igrači redom upisuju brojeve u koje god polje žele (prvi 1, drugi 2, prvi 3, drugi 4), ali tako da zbir svih brojeva u horizontalnom i vertikalnom redu ne bude veći od (a + 1) * a, gde je a broj kvadratića u redu tabele (u ovom slučaju, to je 30). Prvi koji prekrši ovo pravilo gubi, a cilj je da igrač upiše broj poslednji (krajem igre se smatra kada nema više polja u koje bi igrači mogli upisati broj, a da ne prekrši pravilo zbira).

E sad, fazon je u tome što sam ja to zamislio ovako:

Imam 5 nizova za horizontalne redove.
Imam 5 nizova za vertikalne redove.

Svako polje ima svoj HTML ID i onda preko toga regulišem u koji će niz koja vrednost da ide. Brojevi unosa se povećavaju u promenljivoj steps. Problem je sad što treba odraditi sledeće:

- izračunati zbir brojeva u svih 10 redova
- zabraniti unos u sva polja koja bi prekršila pravilo zbira

Znam ja kako to da iskodiram, ali ne znam koji bi način bio najbrži, da li bih morao klasičan pristup (da napravim 10 for petlji pa da stalno ispitujem kroz funkciju)? I to nije sve, kasnije treba uvesti i AI koji će moći donekle da predvidi ishod igre i da izabere najbolje moguće polje u tom trenutku.
Trust yourself, break some rules, don't be afraid to fail, ignore the naysayers, work like
hell and give something back!
# Software is like sex - it's better when it's free :))
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1313
*.dynamic.sbb.rs.



+304 Profil

icon Re: Najefikasniji algoritam za ovu situaciju06.04.2016. u 13:15 - pre 38 meseci
Koristi matricu umesto posebnih nizova za redove/kolone.
http://stackoverflow.com/a/8301441/461810

Svaki element marice bi trebala da bude struktura koja predstavlja trenutno stanje polja:
- Upisana vrednost (ako je ima)
- Da li je dozvoljen upis vrednosti
- Referenca ka DOM elementu polja
- Šta ti već zatreba ...

Sa ovakvom strukturom ostatak je manje/više trivijalan i svodi se na
dve ugneždene petlje i procesiranje/update polja matrice i DOM-a.

AI je posebna priča, morala bi neka heuristika, brute force rekurzija bi bila 25 faktorijel.
 
Odgovor na temu

[es] :: Art of Programming :: Najefikasniji algoritam za ovu situaciju

[ Pregleda: 2744 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.