d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Magyar > General That Feel When Topic > Mutasd Ki érzéseid
Prev1125512561257125812595001Next
Closed New Topic New Poll
Member
Posts: 29,404
Joined: Jan 24 2009
Gold: 0.00
Dec 17 2012 10:42am
Quote (Vismajor @ 17 Dec 2012 17:39)
Lofaszt, cséztem
de most mindenki nagyon toppon van úgy látom :D


source vagy az uj? az uj milyen, beindult már? (klánok, etc)
Member
Posts: 49,807
Joined: Feb 27 2006
Gold: 3,747.73
Dec 17 2012 10:47am
Quote (fahrii @ Dec 17 2012 05:42pm)
source vagy az uj? az uj milyen, beindult már? (klánok, etc)


új is, source is
dno, nem vagyok tul aktiv, de akadt aki letudott lőni, szal vannak már akik huzamosabb ideje játszanak
de source mégmindig jobban pörög imo, de tudtomaml a nagyklánok mind áttértek
Member
Posts: 31,291
Joined: Jun 18 2007
Gold: 280.00
Dec 17 2012 11:03am
tfw életed eddigi legbonyolultabb programját írod, és működik ahogy szeretnéd
Member
Posts: 35,546
Joined: Jun 18 2008
Gold: 5,390.00
Dec 17 2012 11:23am
Quote (anyd @ Dec 17 2012 06:03pm)
tfw életed eddigi legbonyolultabb programját írod, és működik ahogy szeretnéd


>wirte "Hello world!"
Member
Posts: 71,157
Joined: Aug 14 2006
Gold: 6,440.13
Dec 17 2012 11:24am
Quote (jarabekg @ Dec 17 2012 06:23pm)
>wirte "Hello world!"


wirte
Member
Posts: 30,348
Joined: Sep 25 2007
Gold: 2,366.74
Dec 17 2012 11:31am
Quote (beni @ 17 Dec 2012 18:24)
wirte


BME
Member
Posts: 35,546
Joined: Jun 18 2008
Gold: 5,390.00
Dec 17 2012 11:32am
Quote (beni @ Dec 17 2012 06:24pm)
wirte


Quote (Inakwo @ Dec 17 2012 06:31pm)
BME


naciskodjatok csak egy typo miatt
Member
Posts: 30,348
Joined: Sep 25 2007
Gold: 2,366.74
Dec 17 2012 11:33am
Quote (jarabekg @ 17 Dec 2012 18:32)
naciskodjatok csak egy typo miatt


nem nem
ez innentől BME topik
Member
Posts: 31,291
Joined: Jun 18 2007
Gold: 280.00
Dec 17 2012 11:38am
Quote (jarabekg @ Dec 17 2012 06:23pm)
>wirte "Hello world!"


Szociális hálózat adatbázis
A 2. csoport nagy házi feladata egy szociális hálózatot kezelő, hatékony adatbázis elkészítése. (magyarul: erősen butított Facebook/iWiW/Google+ stb. adatbázis).
Elöljáróban: nem kell megijedni, nem kell minden feladatot megcsinálni! :-)
A házi feladathoz megadunk egy interfészt (egy .hpp fájlt a publikus függvények deklarációjával). Ezt a fájlt ki lehet egészíteni, hozzá lehet írni, és lehet benne használni saját modulokat (pl. saját piros-fekete fát) is. Az fontos, hogy a függvénydeklarációkban semmilyen lényegi változtatás ne történjen, mert a helyesség tesztelését nagyrészt automatikusan fogjuk megoldani: a hpp fájlban deklarált függvényeket fogjuk egy tesztelő programban meghívni, és megnézzük, hogy ugyanazt az eredményt adja-e a ti modulotok, mint az általunk megírt modul.
A házi feladat tetszőleges adatszerkezettel elkészíthető, a lényeges, hogy az általunk kiadott interfésznek megfelelő módon fogadja az utasításokat és küldje vissza az eredményeket.
Viszont fontos, hogy minél jobb adatszerkezetet válasszatok: a programotokat nagy mennyiségű adattal fogjuk tesztelni, és mérni fogjuk, hogy mennyi idő alatt fut le. Természetesen a gyorsabb megoldás több pontot jelent. Például, ha egy hatékony piros-fekete fát használtok keresésre, akkor több pontot fogtok kapni, mint ha egy tömbben tároljátok el a keresendő elemeket, és egyesével lépkedtek végig rajtuk.
A házi feladat pontozása két részben történik: van egy mindenki által kötelezően megírandó alap, amire a pontszám 50%-át lehet kapni, és vannak extra feladatok, amelyekből tetszőlegesen lehet választani, hogy mit szeretnétek megcsinálni. Ezekre maximum 70% kapható, azaz legfeljebb 120%-os végeredményt lehet elérni.
A feladatok mellett megadott pontszám egy átlagos hatékonyságú kódra vonatkozik, ettől pozitív és negatív irányban is eltérhet a kapott pont a futási időtől és a megvalósítástól függően.
Néhány szó a rendszerről:
A személyeket egy mindenkinél egyedi, a “regisztrációkor” (személy hozzáadásánál) a felhasználó által megadott tetszőleges szöveges azonosítóval azonosítjuk. (Ez általában e-mail-cím, de nincsen rá semmilyen formai követelmény.)
A bejegyzések ideje nem, de a sorrendisége számít. Azaz ha egy bejegyzés hamarabb készült, mint egy másik, akkor annak hamarabb kell szerepelnie a listában, de az idő nem jelenik meg sehol.
Ha egy funkció nincs megírva, akkor a függvény dobjon egy not_implemented() kivételt!
A rendszert nem fogjuk hibás bemenő adatokkal tesztelni (azaz ismétlődő azonosítóval, kitörölt poszt ismételt törlésével stb.). Ennek ellenére jó, ha nem száll el a program ilyen esetekben sem.
Alap funkciók (50%)

Ezeket mind meg kell csinálni.
Személyek adatainak kezelése:
Személy hozzáadása (“regisztráció”)
add_person(személyazonosító, név)
Személy törlése
delete_person(személyazonosító)
Személy nevének keresése azonosító alapján
get_person_name(személyazonosító) : név
Személy keresése név alapján (több azonos nevű személy is lehet)
Sorrend nem számít.
find_person(név) : vector<személyazonosító>
Ismeretségek kezelése:
Az ismeretségek kétirányúak (azaz ha Béla ismeri Pistit, akkor Pisti is ismeri Bélát)
Ismeretség felvétele
add_connection(személyazonosító1, személyazonosító2)
Ismeretség törlése
delete_connection(személyazonosító1, személyazonosító2)
Ismerősök listájának lekérdezése:
Kilistázza egy adott személy összes ismerősét
Sorrend nem számít.
list_friends(személyazonosító): vector<személyazonosító>
Adatbázis törlése:
Kitöröl mindent, az adatbázis visszaáll a kezdeti állapotára
clear()
Bejegyzések írása:
Bejegyzést lehet írni (visszatér egy egyedi bejegyzésazonosítóval)
post(személyazonosító, szöveg) : bejegyzésazonosító
Bejegyzést lehet törölni
delete_post(bejegyzésazonosító)
Bejegyzés szövegét le lehet kérni:
get_post(bejegyzésazonosító) : szöveg
Bejegyzés szerzőjét le lehet kérni:
get_post_author(bejegyzésazonosító) : személyazonosító
Üzenőfali bejegyzések:
Minden bejegyzés listázása, amit a megadott felhasználó ismerősei írtak (és látható számunkra, lásd később). (Képzeld magad a megadott személy helyébe, és amit látsz a saját üzenőfaladon (a többiek bejegyzéseit), azt listázd.)
Ha nem csinálod meg az adatvédelmi beállításokat (lásd lent), vagy nincs beállítva egy bejegyzéshez semmi, akkor minden bejegyzés alapból publikus, mindenki láthatja!
Időrendi sorrend, korábbi bejegyzések korábban szerepeljenek!
list_news(személyazonosító) : vector<bejegyzésazonosító>
Adott felhasználó üzenőfala: azok a bejegyzések, amiket az adott ismerősünk írt. (A megadott személy profiloldalán látható bejegyzések.)
Időrendi sorrend, korábbi bejegyzések korábban szerepeljenek!
list_posts(személyazonosító) : vector<bejegyzésazonosító>
Extra funkciók (max. 70%)

Az extra funkciókért átlagosan a mellettük megadott pontszám kapható (a pontos pontszám függ a hatékonyságtól és a megvalósítástól, pozitív és negatív irányban is változhat).
Az egyes extra funkciókért járó alappontokért minden oda tartozó feladatrészt meg kell csinálni, a pluszpontok pedig értelemszerűen csak akkor számítanak, ha megvan az alappont.
Ebből a 160%-nyi feladatból azokat és annyit oldasz meg, amennyit szeretnél.
A pontszámok összeadódnak, az egyetlen feltétel, hogy 120% fölé nem lehet menni az összpontszámmal.
(Összesen elméletileg 210%-nyi pontot lehetne szerezni, plusz a hatékonyabb megoldásokért kapott bónuszokat.)
Listázás város alapján (10%):
Minden embernél beállítható és lekérhető a lakhely (város) (alap)
set_home(személyazonosító, városnév)
get_home(személyazonosító) : városnév
Lakhely alapján listázható az összes személy (alap)
Sorrend nem számít.
list_from(városnév) : vector<személyazonosító>
Lakhely alapján listázhatók egy adott személy ismerősei (alap)
Sorrend nem számít.
list_friends_from(személyazonosító, városnév) : vector<személyazonosító>
Születésnapok kezelése (10%):
Minden felhasználónál beállítható legyen a születésnap (alap)
set_birth_date(személyazonosító, év, hó, nap)
Adott napon született felhasználók listázása (alap)
Sorrend nem számít.
list_birth_date(év, hó, nap) : vector<személyazonosító>
Adott napon születésnapot ünneplő ismerősök listázása életkorral (alap)
Sorrend nem számít.
list_friends_birthday(személyazonosító, hó, nap) : vector<pair<személyazonosító, kor>>
Megjegyzések/kedvelések (20%):
Az egyes bejegyzéseket lehet kedvelni és a kedvelést visszavonni (személyenként egyszer) (alap)
like(személyazonosító, bejegyzésazonosító)
unlike(személyazonosító, bejegyzésazonosító)
Az egyes bejegyzésekhez lehet megjegyzéseket fűzni és azokat törölni (alap)
comment(személyazonosító, bejegyzésazonosító, szöveg) : megjegyzésazonosító;
delete_comment(megjegyzésazonosító)
Le lehet kérni egy bejegyzésről, hogy ki kedveli (alap)
Sorrend nem számít.
list_likes(bejegyzésazonosító) : vector<személyazonosító>
Le lehet kérni egy bejegyzés megjegyzéseit (alap)
Sorrend a megjegyzések hozzáfűzésének sorrendjében (korábbi megjegyzés előbb a vektorban)!
list_comments(bejegyzésazonosító) : vector<megjegyzésazonosító>
Le lehet kérni egy bejegyzés szerzőjét (alap)
get_comment_author(megjegyzésazonosító) : személyazonosító
Le lehet kérni egy bejegyzés szövegét (alap)
get_comment(megjegyzésazonosító) : szöveg
Teljes hírfolyam: (10%)
Az előző feladatra ráépül, csak annak elkészítése után ér pontot!
Ha nem csinálod meg az adatvédelmi beállításokat (lásd lent), vagy nincs beállítva egy bejegyzéshez semmi, akkor minden bejegyzés alapból publikus, mindenki láthatja!
Listázza minden ismerős bejegyzését (amit láthatunk), és azokat a bejegyzéseket, amihez ismerőseink megjegyzést fűztek/kedvelték (és mi láthatjuk ezeket a bejegyzéseket), mindezt időrendi sorrendben (azaz ha egy bejegyzést posztolnak, utána pedig egy másikhoz kommentelnek, akkor előbb látszik a posztolt, utána a kommentelt bejegyzés) (alap)
list_full_news(személyazonosító) : vector<bejegyzésazonosító>
Egy bejegyzés csak egyszer jelenik meg: az utolsó alkalommal, amikor kiírásra kerülne az előző feladat szerint (+5%)
list_full_news_once(személyazonosító) : vector<bejegyzésazonosító>
Közös ismerősök: (10%)
Listázza két személy közös ismerőseit (alap)
Sorrend nem számít.
list_common_friends(személyazonosító1, személyazonosító2) : vector<személyazonosító>
Legrövidebb út két személy között: (10%)
Kiír egy legrövidebb utat két megadott személy között (alap)
A visszatérési érték a személyazonosítók vektora, sorban az 1. személytől a 2. személyig, a határokat is beleértve.
get_shortest_path(személyazonosító1, személyazonosító2) : vector<személyazonosító>
Az összes legrövidebb utat kiírja két adott személy között (+5%)
A visszatérési érték az előző feladat eredményének a vektora. Sorrend a különböző utak között nem számít.
list_shortest_paths(személyazonosító1, személyazonosító2) : vector<vector<személyazonosító>>
Adatvédelmi beállítások (10%):
Minden bejegyzésnél szabályozható, hogy ki láthatja azt (publikus/csak ismerősök/csak én). Láthatóságnál az alábbi enum értékek szerepelhetnek (alap)
set_visibility(bejegyzésazonosító, láthatóság)
Láthatóság: visible_public, visible_friends, visible_me
A bejegyzések csak azoknál látszódnak a fenti feladatokban, aki láthatja azokat. (alap)
Szintaxis az előző feladatoknál
Ismerősök ismerősei lehetőség is működik (+10%)
Láthatóság: visible_friends_of_friends
Listák létrehozásának lehetősége, listák megadása láthatóságnak (bejegyzést csak adott listán szereplő ismerősök látnak) (+10%)
A lista nevei felhasználónként egyediek.
create_list(személyazonosító, listanév)
set_visibility(bejegyzésazonosító, listanév)
add_person_to_list(személyazonosító, listanév, hozzáadandó_személyazonosító)
Több “akik láthatják” lista is megadható egy bejegyzés láthatóságánál (+5%)
Emellett érvényben marad a sima láthatóságbeállításban esetlegesen megadott láthatóság is!
set_visibility(bejegyzésazonosító, vector<listanév>)
Több “akik nem láthatják” lista is megadható (ez felülírja az előző listákban megadott láthatóságokat, azaz ha valaki mindkettőben szerepel, akkor nem láthatja a bejegyzést!) (+5%)
set_invisibility(bejegyzésazonosító, vector<listanév>)
Ismeretségi gráf kirajzolása (20%):
Valamilyen grafikus felületre vagy képfájlba (ekkor javasolt, de nem kötelező a .ppm formátum: https://en.wikipedia.org/wiki/Netpbm_format), szerepeljen rajta minden ember, és legyenek összekötve azok, akik ismerik egymást. A pontos pontszám a rajz átláthatóságától függ.
draw_graph()
Adatok fájlba mentése/beolvasása (20%):
Mindenki saját módszerrel mentheti az adatokat, az a lényeg, hogy az utolsó mentett állapotot mindig újra be tudja olvasni, a program bezárása és újraindítása után is (a megnyitás parancs meghívásakor mindig az utolsó mentett állapot töltődjön be).
Megnyitás
open()
Mentés
save()
Member
Posts: 29,340
Joined: Oct 4 2005
Gold: 4.20
Dec 17 2012 12:11pm
utolso 5 oldal eleg fasza lett
leszamitva levi tldrjet
Go Back To Magyar Topic List
Prev1125512561257125812595001Next
Closed New Topic New Poll