Portfólió

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

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

buvár
A program kiszámolja:
- az összegyűjtött gyöngyök számát
- az összértéket
- a robot végső pozícióját
- valamint grafikus formában megjeleníti az útvonalat