namirual / dungeon-forager Goto Github PK
View Code? Open in Web Editor NEWAlgorithm for pathfinding in a dungeon that requires gathering resources to cross.
Algorithm for pathfinding in a dungeon that requires gathering resources to cross.
Paketti ladattu 10:38 23.11.2017
Mielenkiintoinen aihe.
(koodia luettu 27.11. klo 21:30-22:30)
Hyvältä vaikuttaa.
Haet eri kierrosten askeleita samassa listassa, jolloin paras reitti löytyy luonnollisesti ensimmäisenä (kunhan toteutat askeleiden järjestämisen).
Hyvän oloinen rakenne, missä askeleet ja kierrokset on eritelty omiin luokkiinsa.
heuristic: Mielestäni ei ole hyötyä ottaa karteesista etäisyyttä sqrt(x*x+y*y)
,
kun luolastossa voi liikkua vain vierekkäisiin ruutuihin ruutu kerrallaan.
Todellinen pienin etäisyys kohteeseen siis olisi x+y
.
comparator: lisäksi karteesisen etäisyyden tarkkuus menetetään kun muutetaan double -> int.
Tässä etäisyyden voisi kertoa jollain vakiolla, jolloin saataisiin tarkempi vertailu.
Tai esimerkiksi palauttaa 1 jos val1 > val2
, 0 jos val1 == val2
ja -1 jos val1 < val2
.
Tähän on tärkeä keskittyä, sillä jos järjestys on epätäsmällinen niin ohjelma ei tuota lyhintä/parasta polkua luolaston läpi.
visited: ovelaa käyttää taulukkoa, joka ei kopioidu sijoitusoperaatiossa (vaan on eri askeleille sama)
säästäen muistia ja helpottaa informaation jakamista.
Jos haluaisi säästää enemmän tilaa niin jokaiselle luolan ruudulle voisi olla oma taulukko/lista,
johon lisättäisiin millä kierroksella siinä on jo käyty.
Tämä sillä oletuksella, että kukin kierros koluaa vain osan luolastosta.
Jos kaikki kierrokset koluavat käytännössä koko luolaston niin tilaa ei säästy (mutta tällöin maali on luultavasti jo löydetty).
Vanhassa versiossa et vielä järjestä askeleita.
Oletettavasti tätä varten olet lisännyt PriorityQueue luokan.
Projekti etenee hyvin!
gradle test -i
ei näyttänyt onnistuvan, testejä ei suoriteta, joten niiden oikeellisuus jäi tällä kertaa tarkistamattaKoodikatselmointi suoritettu 2017-11-26T15:37+0200.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.