Készíts olyan rendszert, amely sportfogadásokat tesz lehetővé az alábbiak szerint. A rendszerben különböző sporteseményekre lehet fogadni. A sportesemenyek.txt tartalmazza az esemény nevét, az esemény 1, 2, illetve X kimenetelének valószínűségét százalékban (egész szám), azt, hogy a program indítása után hány ezredmásodperccel jelenik meg (innentől lehet rá fogadni), és szintén ezredmásodpercekben az, hogy mikor zajlik le (eddig lehet rá fogadni). A sportesemény lezajlásának pillanatában a valószínűségek figyelembe vételével, véletlenszerűen kiderül, hogy az esemény kimenetele 1, 2 vagy X lesz-e. A sporteseményre az esemény lezajlása után nem lehet fogadni. Feltételezhető, hogy az események neve különböző, és nem fordulhat elő, hogy a megjelenésük előtt zajlanak le. Az viszont nem tételezhető fel, hogy a fájlban a sportesemények bármilyen módon rendezett sorrendben lennének megtalálhatóak. A rendszerben fogadóirodák is találhatóak, amelyek mindegyike egy külön porton keresztül érhető el (azaz annyi portot használ a teljes program, ahány fogadóiroda van), amelyek információit a fogadoirodak.txt tartalmazza. Ilyen információk a fogadóiroda neve, a portjának a száma, az egy fogadás során maximálisan feltehető összeg, valamint egy p pozitív szám. A fogadóirodák értesülnek a megjelenő sporteseményekről, és ha még nem zajlottak le, a kínálatukban tartják. A fogadóiroda minden, a kínálatban megtalálható sportesemény 1, 2 és X kimeneteléhez hozzárendel egy odds értéket a következőképpen. A fogadóiroda lekérdezi az eseménytől annak 1, 2 és X kimenetelének valószínűségét. A sportesemény válasza erre a lekérdezésre legfeljebb 25% különbséggel eltérhet a valódi értéktől. A fogadóiroda az oddsot a három kimenetre ezekből az értékekből számítja úgy, hogy lecsökkenti azokat véletlenszerűen, összesen p százalékponttal. A rendszerben sportfogadók is találhatóak, akik véletlenszerű időközönként felkeresik a fogadóirodákat, lekérik tőlük az eseménykínálatot az oddsokkal, és fogadnak az eseményekre. A sportfogadók adatait a sportfogado.txt írja le. Ez a fájl tartalmazza a sportfogadó nevét és a kezdetben nála levő pénzösszeget. A sportfogadók fogadási stratégiája lehet teljesen véletlenszerű (melyik irodában, melyik esemény, milyen kimenet, milyen összeg), de megengedett részletesebben kidolgozott stratégia készítése is, ha az jól demonstrálható működésű. Fogadáskor a feltett pénzösszeg átkerül a fogadótól a fogadóirodához, az esemény lezajlása után pedig, ha a fogadó eltalálta az eredményt, a fogadóiroda által ajánlott odds-szal növelt pénzösszeg kerül át a fogadóirodától a fogadóhoz. Feltehető, hogy a fogadóirodának korlátlan mennyiségű pénz áll rendelkezésére, azt viszont tartsa számon (és írja ki minden fogadásnál és kifizetésnél), hogy az induláshoz képest mennyivel több vagy kevesebb pénze van. Amennyiben már nincsen több sportesemény a fájlban, mindegyik sportesemény lezajlott, és a fogadóirodák minden fogadást kifizettek, a program álljon le. A rendszerben a sportfogadók és a sportesemények ismerik a fogadóirodák portjait, és azokhoz kapcsolódnak. A fogadóirodák az alábbi formátumú üzeneteket képesek fogadni: megjelent <1 kimenetel valószínűsége> <2 kimenetel valószínűsége> Ezt az üzenetet a sportesemények küldik mindegyik fogadóirodának. A sportesemények minden fogadóirodának más-más valószínűségi értékeket küldenek, amelyek a valódi értékektől max. 25%-kal térhetnek el. A három küldött érték összegének nem feltétlenül kell 100-nak lennie. lezajlott Ezt az üzenetet a sportesemények küldik mindegyik fogadóirodának. sportesemenyek Ezt az üzenetet egy sportfogadó küldi egy fogadóirodának. Ennek hatására a fogadóiroda visszaküldi egy sorban a kínálatában található sportesemények számát, majd soronként a sportesemények neveit. odds Ezt az üzenetet egy sportfogadó küldi egy fogadóirodának. A fogadóiroda visszaküldi egy sorban az adott sportesemény 1, 2 és X kimenetelének oddsát. fogad <összeg> Ezt az üzenetet egy sportfogadó küldi egy fogadóirodának. A sportfogadó közli a fogadóirodával, hogy milyen fogadást köt. A fogadóiroda a sportesemény lezajlásáig fenntartja ezt a kapcsolatot, és ekkor a következő választ küldi. nyert <összeg> A sportfogadó eltalálta a sportesemény kimenetelét, és a megadott összegű pénznyereményt veheti át. vesztett A sportfogadó nem talált, és nem kap pénzt. A program futása során minden fontos lépés megtétele során írjon ki arról egy rövid üzenetet a sztenderd kimenetre. Példa odds számítására: tegyük fel, hogy az E sportesemény 1, 2 és X valószínűségei rendre 30, 20 és 50. Az I fogadóiroda ezt lekérdezi, azonban ezektől kissé különböző értékeket kap: 33, 25 és 42. (Ha I2 fogadóiroda is lekérdezi a valószínűségeket, ő más értékeket kap, pl. 26, 21 és 53. Ezzel azt szimuláljuk, hogy a fogadóirodák csak jó közelítéssel képesek megbecsülni egy sportesemény kimeneteleinek valószínűségét.) A fogadóiroda a kapott értékekből a következő odds értékeket számítja ki: 10000/33, 10000/25 és 10000/42, azaz egészre kerekítve 303, 400 és 238. A fogadóiroda p értéke 15, összesen ennyit von le véletlenszerűen a három kimenetelből: 1, 2 és X végleges odds értékei 299, 390 és 237 lesznek. Az F sportfogadó 250 egységnyi pénzt tesz fel az X eseményre. Ez az összeg azonnal levonódik tőle, és beíródik a fogadóiroda nyereségéhez. Ha az E sportesemény eredménye X lesz, akkor 250*237/100 (=592) egységnyi pénz kerül át az F fogadóirodától F-hez.