Programozási alapismeretek
Alap programozási készségek elsajátítása és a python nyelvel való megismerkedés.
Bevezetés
A Python alapok során elsajátítottam a változók, adatszerkezetek, ciklusok és feltételek használatát, valamint egyszerű algoritmusok megvalósítását, amelyek megalapozták a strukturált és logikus programozói gondolkodást.
Elsajátított python alapok
- Változók és alap adattípusok kezelése (int, float, string, bool)
- Lista- és szótárkezelés
- Feltételes szerkezetek (if–elif–else)
- Ciklusok alkalmazása (for, while)
- Függvények létrehozása és paraméterezése
- Egyszerű algoritmusok megvalósítása
- Alap hibakezelés (try–except)
Projekt bemutatása
A projekt célja egy olyan Python program készítése volt, amely egy búvárrobot számára meghatározza a lehető legjobb útvonalat adott időkorláton belül. A robot egy háromdimenziós medencében mozog, ahol különböző koordinátákon gyöngyök találhatók eltérő értékekkel.
A program feladata annak meghatározása volt, hogy a robot mely gyöngyöket gyűjtse össze úgy, hogy a rendelkezésre álló időn belül vissza tudjon térni a kiindulási pontra, miközben a lehető legnagyobb összértéket gyűjti össze.
A megoldás során a robot mindig azt a gyöngyöt választja ki következő célpontnak, amely a legjobb érték / távolság aránnyal rendelkezik az aktuális pozícióhoz képest.
A kód bemutatása
Távolság kiszámítása
A robot és a gyöngyök közötti távolság meghatározása euklideszi távolsággal történik három dimenzióban.
def tavolsag(búvárrobot_x,búvárrobot_y,búvárrobot_z,i):
return math.sqrt(
(búvárrobot_x-használható_gyöngyök[i][0])**2 +
(búvárrobot_y-használható_gyöngyök[i][1])**2 +
(búvárrobot_z-használható_gyöngyök[i][2])**2
)
Ez a függvény kiszámolja a robot aktuális pozíciója és egy adott gyöngy koordinátái közötti távolságot.
Döntési stratégia
A robot nem egyszerűen a legközelebbi gyöngyöt választja, hanem az érték és távolság arányát vizsgálja.
def arany(búvárrobot_x,búvárrobot_y,búvárrobot_z,i):
if tavolsag(búvárrobot_x,búvárrobot_y,búvárrobot_z,i)>0:
return gyöngyök[i][-1] / tavolsag(búvárrobot_x,búvárrobot_y,búvárrobot_z,i)
else:
return 0
Ez lehetővé teszi, hogy a robot a lehető legtöbb értéket gyűjtse össze a rendelkezésre álló útvonalhossz figyelembevételével.
Útvonal választás
A program ciklus segítségével folyamatosan újraszámolja a legjobb következő gyöngyöt.
while len(használható_gyöngyök) != 0:
arányok = []
for i in range(len(használható_gyöngyök)):
arányok.append(arany(búvárrobot_x,búvárrobot_y,búvárrobot_z,i))
legjobb_arány = max(arányok)
A kiválasztott gyöngy csak akkor kerül be az útvonalba, ha a robot még képes időben visszatérni a kiindulási pontra.
Grafikus megjelenítés
A program a kiszámolt útvonalat pygame segítségével vizualizálja. A medence téglalapként jelenik meg, a gyöngyök sárga körökként, a robot pedig piros körként.
pygame.draw.circle(ablak, gyöngyök_színe,
(téglalap_x + felvehető_gyöngyök[i][0] * 5,
téglalap_y + felvehető_gyöngyök[i][1] * 5),
értékek[i], 30)
Az animáció lépésenként mutatja meg a robot mozgását az útvonal mentén.
Eredmény
- A program kiszámolja: