Your chance to change the world

Régebbi feladatok

Az Ericsson Programozó Bajnokságot már 2011 óta rendezzük meg,  a versenyen minden évben más-más feladat vár Rád és csapatodra. Ezen az oldalon a teljesség igénye nélkül közzé teszünk pár feladatot, hogy képet nyerjetek arról, mi vár Rátok. Az itt található anyagok csak kivonatok!

2019 - Router

Az első fordulóban a routerek állapotát irányíthatták a résztvevők, a cél az volt, hogy a csapat adatcsomagjait részesítse előnyben, és ezáltal az összes adatszeletet eljuttassa a célállomásra a router.

A második fordulóban már nem csak a csapatok algoritmusai, hanem egy bot is állítgatta a routereket. Itt az adatok célba juttatásának gyorsasága számított.

A döntőben a csapatok egymás ellen mérköztek meg, amiről egy egy videót is megtekinthettek:

2016 - F0C++

Az Ericsson C++ Programozó Bajnokság 2016-os programozási feladata a futball téma köré íródik. A
történet szerint egy futball bajnokság van készülőben. Ahhoz, hogy a csapatok eljussanak a nagy
mérkőzésig, először egyenként kell felfejleszteniük a csappattagjaikat. Ehhez szituációs gyakorlatokat
végeztet velük az edzői csapat, melynek szerepét a Te csapatod látja most el.

A feladatotok a következő: egy olyan C++ program írása, mely mint egy virtuális játékos, a megadott
futball helyzeteket oldja meg, minél többet, a legrövidebb idő alatt.
A program a szerverrel a standard inputján illetve a standard outputján keresztül kommunikál az alább
specifikált protokollal.

Egy focistának három fejlesztendő képessége létezik: Kapus, Védő, és Támadó. Így a végső pontozás
is három számból, az ezen típusú gyakorlatok alatt tanúsított fejlettségi szintekből fog állni.

2013 - 2. forduló - Logo

Adott a logo.txt file. Feladatotok egy olyan C++ program írása, melynek kimenete megegyezik a logo.txt-ben találhatóval.

Helyes kimenet esetén, a pontozás programotok karaktereinek számától függ. A cél minél kevesebb karaterből megoldani a feladatot.

A fordítás és tesztelés (vázlatos) menete:
Átnevezzük a beküldött fájlt main.cpp-re
g++ -std=c++11 -O2 main.cpp
diff <(./a.out) logo.txt
A fordítás a g++ 4.8.1-es verizójával történik.

2012 - 2. forduló - Radio Tower

Telefontársaságoknak mindig nagy kihívást jelent egy országban a lehető legnagyobb lefedettség biztosítása minél hatékonyabban: azaz minél kevesebb adótorony használatával.

Adott egy egyszerű sokszög, amely annak az országnak a területét jelképezi, amelyre képzeletbeli telefontársaságunknak lefedettséget kell biztosítania. Az adótornyok hatótávolsága minden tesztesetben adott.

Készíts egy olyan programot, amely elhelyezi az ország területén az adótornyokat.

A bemenetet a program az stdin-re fogja kapni. A bemenet első sora két egész számot tartalmaz : N M. (1<=N<=10, 3<=M<=10000). A bemenet következő N sor mindegyike két egész számot tartalmaz : Ri Ki (1<=Ri<=100000, 0<=Ki<=1000), ami azt jelenti, hogy Ri hatósugarú adótoronyból Ki darab használható. Ez után a bemenet következő M sora valós számpárokat (double) (Xj, Yj) tartalmaz. Ez az M db pont határozza meg a sokszöget. Értelemszerűen, a sokszög oldalait minden pontohoz a rákövetkező ponttal összekötve kapjuk, az utolsó oldalt pedig az utolsó és az első pont összekötése adja.

A kimenetet az stdout-ra várjuk. A kimenet első sora tartalmazza az elhelyezett tornyok számát (N), a következő N sor pedig a tornyokat jelképező számhármasokat: X, Y és R, ahol X és Y valós (double), R pedig pozitív egész. (Ri sugarú tornyból nem lehet több mint Ki)

Példa bemenet:

2 6
30 1
40 2
250.0 114.0
300.0 200.0
250.0 286.0
150.0 286.0
200.0 200.0
150.0 114.0

Példa kimenet:

3
250.3 160.2 30
220.2 175 40
218.3 255.9 40

Megjegyzések:

Fordítás:

A forrásaitokat a következő paranccsal fogjuk fordítani:
g++ -std=c++11 -pedantic -static -O2 -isystem ${boost_dir}/include *.cc *.cpp –o radioTower

g++ verziója 4.7.1

Boost verziója 1.51 (csak header-only library-k használhatók)

2011 - 2. forduló - Hamlet

To be, or not to be: that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles,
And by opposing end them? To die: to sleep;
No more; and by a sleep to say we end
The heart-ache and the thousand natural shocks
That flesh is heir to, 'tis a consummation
Devoutly to be wish'd. To die, to sleep;
To sleep: perchance to dream: ay, there's the rub;
For in that sleep of death what dreams may come
When we have shuffled off this mortal coil,
Must give us pause: there's the respect
That makes calamity of so long life;
For who would bear the whips and scorns of time,
The oppressor's wrong, the proud man's contumely,
The pangs of dispriz'd love, the law's delay,
The insolence of office and the spurns
That patient merit of the unworthy takes,
When he himself might his quietus make
With a bare bodkin? Who would these fardels bear,
To grunt and sweat under a weary life,
But that the dread of something after death,
The undiscover'd country from whose bourn
No traveller returns, puzzles the will
And makes us rather bear those ills we have
Than fly to others that we know not of?
Thus conscience does make cowards of us all;
And thus the native hue of resolution
Is sicklied o'er with the pale cast of thought,
And enterprises of great pith and moment
With this regard their currents turn away,
And lose the name of action.--Soft you now!
The fair Ophelia! Nymph, in thy orisons
Be all my sins remember'd.

Írjunk egy C++ programot, amely Shakespeare Hamlet c. színművéből idézi a híres Lenni vagy nem lenni monológot.

A program a standard outputra írja ki a szöveget, pontosan úgy, ahogy az a mellékelt hamlet.txt szövegfájlban szerepel. A szavakat pontosan egy space karakter választja el, a sorok végén (az utolsó után is) pontosan egy newline (0x0A) karakter áll (tehát NEM windows-os CR+LF sorvégét kell alkalmazni).

A program egyetlen forrásfájlból álljon (a szabványos headereket és könyvtárat természetesen szabad használni), és az idézethez ne használjon fel külső forrásokat (pl. külön textfájlt, vagy hálózati kapcsolatot, stb...). A programot lefordítjuk, lefuttatjuk és a standard outputját a diff paranccsal összehasonlítjuk a hamlet.txt-vel. Csak azokat a programokat fogadjuk el, ahol teljes az egyezés.

OK, de mi itt a verseny? A cél, hogy a feladatot a LEGRÖVIDEBB forrásfájllal oldjátok meg.  Lefordítjuk és lefuttatjuk a beküldött programot. Ha a helyes outputot adja, akkor megszámoljuk a forrásfájl karakterszámát. Preprocesszálás előtt mérünk. Az include-olt headerek méretét külön nem számoljuk,  csak magának az #include direktívának a méretét számoljuk. Azaz pl. az alábbi program 

#include  
int main()
{
  std::cout << "Hello" << std::endl;
  // kommentek szamitanak!
  return 0;
}

mérete 89, de nem fogadnánk el, mert hibás az outputja.
Végül azért, hogy ihletet adjunk: http://www.artofeurope.com/shakespeare/sha8.htm