Versenyfeladat

A kihívás két részből áll. Az első részben a csapatok külön-külön dolgoznak, majd a második részben a csapatok által írt programok egymással „versenyeznek” az alábbiak alapján.

A kihívásban programok próbálják meg elpusztítani egymást egy virtuális számítógép szimulált memóriájában. A programokat speciális programozási nyelven kell megírni. A programozási nyelv és a virtuális számítógép sokkal egyszerűbbek a valóságnál. A virtuális számítógép egy memóriából (későbbiekben aréna) áll, amely lényegében egy utasítástömb. Alapesetben a tömb - a későbbiekben tárgyalt - DAT utasítást tartalmazza a következő formában: DAT #0, #0. A szimuláció indulása során a harcoló programok ebbe a tömbbe másolódnak be, véletlen pozícióba, és a program utasításai ekkor felülírják ezt az alapértéket. Az aréna fix méretű (a konkrét adatokat „A futtatás paraméterei” bekezdésben tárgyaljuk), de körkörös, vagyis az utolsó memóriahely után ismét az első jön. Valójában a programnak nem kell tudnia, hol van a tömb vége, mivel nincsenek abszolút címek. Így a zérus (0) cím nem a memória első utasítását jelenti, hanem magát az aktuális utasítást. A következő utasítás az 1-es címen található, az előző utasítás pedig a -1–es címen.

Az alapegység tehát nem byte, hanem az utasítás. Egy utasítás három részből áll, egy műveletből (opcode), egy forrás címből (A mező) és egy cél címből (B mező). Egy utasítás oszthatatlan egység. Az utasításokból létrejövő harcos program végrehajtása szintén igen egyszerű. A szimulátor egy időben egyetlen utasítást hajt végre, majd a következő memóriacímen található utasítást, kivéve, ha szándékosan máshova ugrottunk. Ha egynél több program van a memóriában (vagyis az arénában), akkor utasításonként váltogat a szimulátor a programok között. Több program esetén először az első program első utasítását hajtja végre a szimulátor, majd a második program első utasítását, majd a harmadikét, stb., amíg van másik program. Ha az összes program első utasítását végrehajtotta, akkor ismét az első programmal folytatja, és végrehajtja annak második utasítását, és így tovább. Ha valamelyik programnak kevesebb utasítása van, mint a másiknak, akkor legközelebb, amikor ismét ő van soron, az ő első utasítása hajtódik végre. Minden utasítás végrehajtása azonos ideig tart! További részletek a végrehajtásról a „Programvégrehajtás” bekezdésben található.

Feladat letöltése

Galéria:

Eredmények

I. helyezett

Type your team name here csapat
Pécs PTE-MIK

Tagok:

  • Hamerli András
  • Nagy Bence
  • Zalavári Bálint

II. helyezett

Counter Errorists csapata
Pécs PTE-TTK

Tagok:

  • Gömöri Marin
  • Konecsny Bence
  • Riba Dániel

III. helyezett

#define TEAMNAME csapata
Nagykanizsa Batthyány Lajos Gimnázium

Tagok:

  • Busa Máté
  • Pőcze Barnabás
  • Szinyéri Bence

Támogatók:

Neumann János Számítógép-tudományi Társaság Baranya megyei szervezet
Neumann János Számítógép-tudományi Társaság Baranya megyei szervezet

INPUT PROGRAM
INPUT PROGRAM

Pécsi Tudományegyetem, Műszaki és Informatikai Kar
Pécsi Tudományegyetem, Műszaki és Informatikai Kar

TARR Kft.
TARR Kft.

Magyar Telekom
Magyar Telekom

DMS One Zrt.
DMS One Zrt.

DSS consulting
DSS consulting

OMIKRON Informatikai Kft.
OMIKRON Informatikai Kft.

IT Services Hungary
IT Services Hungary

suIT Solutions Kft
suIT Solutions