Gå til innhold

daysleper

Medlemmer
  • Innlegg

    296
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av daysleper

  1. Ser ut som om det er mange måter å gjøre det her på --

     

    Jeg prøver meg med en algoritme der personer spør hverandre om de kan få plassen til en annen på grunnlag av hvor mye den personen som spør taper i "rettferdighet" hvis han/hun ikke får byttet, mot det han/hun som blir spurt taper i "rettferdighet" hvis han/hun velger å akseptere byttet.

     

    De spør personene "under" hverandre igjen, rekursivt (hm, tror jeg) -- for så å rapportere tilbake til den som spurte på "toppen" om hvor mye han/hun og de under han/hun taper til sammen.

     

    Rettferdighet måles i hvor mange prioriterte valg en person må gi slipp på for at andre skal få vilja si.

     

    ..mulig jeg misser noe her.. måtte bare få skrevet det ned og se om det ble klarere.

     

    Kan hende dette blir noe som tar fryktlig lang tid, men jeg vil prøve meg på en algoritme som på en måte finner en "perfekt" løsning på en systematisk måte uten å måtte prøve alle kombinasjoner - hvis det er mulig.

     

    Så var det å holde tungen bent i munnen .. :)

  2. Ja, dette:

     

    Seats::Person person1;

    person1.name("Lise");

    person1.addWish(1, 1); // priority, seat number

    person1.addWish(2, 2);

    person1.addWish(3, 3);

    seats.addPerson(person1);

     

    Seats::Person person2;

    person2.name("Ole");

    person2.addWish(1, 2); // priority, seat number

    person2.addWish(2, 4);

    person2.addWish(3, 1);

    seats.addPerson(person2);

     

    Seats::Person person3;

    person3.name("Per");

    person3.addWish(1, 3); // priority, seat number

    person3.addWish(2, 4);

    person3.addWish(3, 2);

    seats.addPerson(person3);

     

    Seats::Person person4;

    person4.name("Anja");

    person4.addWish(1, 2); // priority, seat number

    person4.addWish(2, 3);

    person4.addWish(3, 1);

    seats.addPerson(person4);

     

     

    Gir denne output'en:

     

    Lise is finding a place to sit.

    Lise sits down at seat number 1, which for him/her is a priority 1 seat.

     

    Ole is finding a place to sit.

    Ole sits down at seat number 2, which for him/her is a priority 1 seat.

     

    Per is finding a place to sit.

    Per sits down at seat number 3, which for him/her is a priority 1 seat.

     

    Anja is finding a place to sit.

     

     

    Placements

    ----------

    Seat number: 1 -- Lise

    Seat number: 2 -- Ole

    Seat number: 3 -- Per

     

    Remaining

    ---------

    Anja did not get any of the seats that he/she wished for.

     

     

    Stakkars Anja blir m.a.o. stående igjen når Ole i stedet kunne satt seg på plass 4 (hans 2. valg) og Anja fått hans plass 2 (hennes 1. valg) altså?

     

    Jeg sa jeg var treg i hue noen ganger. :)

     

    Se om jeg kan legge til noe som bytter litt om her da ..

  3. Skal sette meg inn i det dere foreslo, har bare ikke hatt tid til å gjøre det enda (og hva gjør jeg med .java-programmer? Kan de kjøres i feks en nettleser?).

     

    Java

     

    Du må ha Java runtime og en Java kompiler installert. ( http://java.sun.com/j2se/downloads.html SDK-kolonnen altså! )

    Du trenger ikke den pakken som inkluderer Netbeans.

     

     

    For å kompilere

    Få frem en kommandolinje og skriv:

    javac InputGen.java

     

    ..og ut kommer en InputGen.class -fil.

     

     

    For å kjøre

    java InputGen

     

     

     

    C++

     

    Du trenger en C++ kompiler: http://prdownloads.sf.net/mingw/MinGW-3.1.0-1.exe?download

    Denne er for Windows, hos Linux er det allerede installert en tilsvarende kompiler.

     

    I hovedsak er det ganske likt det å kompilere Java-kode:

     

     

    Kompilere

    Få frem en kommandolinje og skriv:

    g++ findseats.cpp -o findseats

     

    ..og ut kommer en findseats.exe -fil.

     

    Kjøre

    findseats

     

     

    Flere detaljer

    Windows: http://nostdal.net/forum/viewtopic.php?p=154#154

    Linux: http://nostdal.net/forum/viewtopic.php?p=155#155

     

    FAQ'en for C++ her på sourcecode.no er "føkka" (forum-bytte) - derfor jeg linker til en backup.

  4. Her er Eks. 3's input (nå i form av C++ -kode, men kunne godt vært en simpel .txt-fil som leses inn):

     

    Seats::Person person1;

    person1.name("Lars");

    person1.addWish(1, 1); // priority, seat number

    person1.addWish(2, 2);

    person1.addWish(3, 3);

    seats.addPerson(person1);

     

    Seats::Person person2;

    person2.name("Kari");

    person2.addWish(1, 2); // priority, seat number

    person2.addWish(2, 2);

    person2.addWish(3, 1);

    seats.addPerson(person2);

     

    Seats::Person person3;

    person3.name("Per");

    person3.addWish(1, 3); // priority, seat number

    person3.addWish(2, 1);

    person3.addWish(3, 2);

    seats.addPerson(person3);

     

    Seats::Person person4;

    person4.name("Lise");

    person4.addWish(1, 4); // priority, seat number

    person4.addWish(2, 2);

    person4.addWish(3, 3);

    seats.addPerson(person4);

     

    Seats::Person person5;

    person5.name("Ola");

    person5.addWish(1, 5); // priority, seat number

    person5.addWish(2, 2);

    person5.addWish(3, 3);

    seats.addPerson(person5);

     

    Seats::Person person6;

    person6.name("Anja");

    person6.addWish(1, 1); // priority, seat number

    person6.addWish(2, 6);

    person6.addWish(3, 3);

    seats.addPerson(person6);

     

    Seats::Person person7;

    person7.name("Kjetil");

    person7.addWish(1, 2); // priority, seat number

    person7.addWish(2, 7);

    person7.addWish(3, 1);

    seats.addPerson(person7);

     

    Seats::Person person8;

    person8.name("Nils");

    person8.addWish(1, 3); // priority, seat number

    person8.addWish(2, 8);

    person8.addWish(3, 2);

    seats.addPerson(person8);

     

    Seats::Person person9;

    person9.name("Kine");

    person9.addWish(1, 4); // priority, seat number

    person9.addWish(2, 6);

    person9.addWish(3, 9);

    seats.addPerson(person9);

     

    Seats::Person person10;

    person10.name("Bjarne");

    person10.addWish(1, 5); // priority, seat number

    person10.addWish(2, 7);

    person10.addWish(3, 9);

    person10.addWish(4, 10);

    seats.addPerson(person10);

     

     

    Her er Eks 3's output:

    Lars is finding a place to sit.

    Lars sits down at seat number 1, which for him/her is a priority 1 seat.

     

    Kari is finding a place to sit.

    Kari sits down at seat number 2, which for him/her is a priority 1 seat.

     

    Per is finding a place to sit.

    Per sits down at seat number 3, which for him/her is a priority 1 seat.

     

    Lise is finding a place to sit.

    Lise sits down at seat number 4, which for him/her is a priority 1 seat.

     

    Ola is finding a place to sit.

    Ola sits down at seat number 5, which for him/her is a priority 1 seat.

     

    Anja is finding a place to sit.

    Anja sits down at seat number 6, which for him/her is a priority 2 seat.

     

    Kjetil is finding a place to sit.

    Kjetil sits down at seat number 7, which for him/her is a priority 2 seat.

     

    Nils is finding a place to sit.

    Nils sits down at seat number 8, which for him/her is a priority 2 seat.

     

    Kine is finding a place to sit.

    Kine sits down at seat number 9, which for him/her is a priority 3 seat.

     

    Bjarne is finding a place to sit.

    Bjarne sits down at seat number 10, which for him/her is a priority 4 seat.

     

     

    Placements

    ----------

    Seat number: 1 -- Lars

    Seat number: 2 -- Kari

    Seat number: 3 -- Per

    Seat number: 4 -- Lise

    Seat number: 5 -- Ola

    Seat number: 6 -- Anja

    Seat number: 7 -- Kjetil

    Seat number: 8 -- Nils

    Seat number: 9 -- Kine

    Seat number: 10 -- Bjarne

     

    Remaining

    ---------

     

     

    Hvis jeg bytter om rekkefølgen jeg legger til personer får jeg seff. samme output.

  5. Algoritmen min sikkrer at så mange som mulig får høyest mulig tilgjengelige prioriterte valg.

     

    Tror ikke man på noen måte kan være uheldig med input som du sier: -Den skal gjøre det samme som i eksemplene under uansett:

     

     

    Eks1:

    10 personer med første prioritert på 10 forskjellige seter --> 10 får sitt første ønske.

    0 resterende personer.

    10 fikk første valg.

     

     

    Eks2:

    10 personer med første prioritet på 5 forskjellige seter --> 5 får sitt første valg.

    5 resterende personer.

    5 personer med andre prioritet på 5 forskjellige seter --> 5 får sitt andre valg.

    0 resterende personer.

    5 fikk første valg, 5 fikk andre valg.

     

     

    Eks3:

    10 personer med første prioritet på 5 forskjellige seter --> 5 får sitt første valg.

    5 resterende personer.

    5 personer med andre prioritet på 3 forskjellige seter --> 3 får sitt andre valg.

    2 resterende personer.

    2 personer med tredje prioritet på 1. sete --> 1 får sitt tredje valg.

    1 resterende person.

    1 person med fjerde prioritet på 1. sete --> 1 får sitt fjerde valg.

    0 resterende personer.

    5 fikk første valg, 3 fikk andre valg, 1 fikk tredje valg og 1 fikk fjerde valg.

     

     

    Jeg ser ingen annen måte som kan være mer rettferdig enn dette .. Jeg er treg i hue noen ganger - så si fra.

     

    Hva hvis vi tar en liten test? -- Vi tar begge algoritmene våre og gir dem samme datafil som input for så å se hva de gjør ut av det? Eller 3 datafiler kanskje? En liten, en mellomstor og en stor?

     

    Kunne du generert noe data med den Java-snutten din og lagt en link her?

    Så legger vi begge ut resultat av output fra algoritmene våre? :)

  6. Start med selve språket C eller C++.

    Jeg foreslår egentlig C++ i stedet for C. Det er lurere å begynne med C++ med en gang hvis du alikevell har tenkt å programmere i C++ siden. (helt sannt!)

     

    Glem med andre ord socket-programmering og Windows-spesifik programmering foreløpig.

     

    Ta en titt i FAQ'en ang. bøker for nybegynnere.

    Mulig linkene og andre ting i FAQ'en er litt føkka nå som vi har skiftet forum, men ordner seg vel ..

  7. http://scm.nostdal.net/cgi-bin/viewcvs.cgi/tests/?root=tests (ta en titt på findseats.cpp)

     

    Slang sammen noe i farta her. Mulig jeg har misforstått ting og tang, for jeg leste bare kjappt igjennom innlegget ditt. :)

     

    Programmet er forøvrig skrevet i C++.

     

    Når programmet kjøres får jeg denne utskriften:

     

    Lars is finding a place to sit.

    Lars sits down at seat number 1, which for him/her is a priority 1 seat.

     

    Kari is finding a place to sit.

    Kari sits down at seat number 2, which for him/her is a priority 2 seat.

     

    Per is finding a place to sit.

    Per sits down at seat number 3, which for him/her is a priority 3 seat.

     

    Lise is finding a place to sit.

     

     

    Placements

    ----------

    Seat number: 1 -- Lars

    Seat number: 2 -- Kari

    Seat number: 3 -- Per

     

    Remaining

    ---------

    Lise did not get any of the seats that he/she wished for.

     

     

    Kan prøve å forklare åssen jeg har tenkt.

    Jeg har her kun tatt hensyn til at hvert "sted" er et sete med kun plass til én person, men det er ikke noe i veien for å endre på dette.

     

    Når alle personene og deres prioriteringer av seter i problemet er lagt til, kalles Seats::sit() -metoden.

    Den finner det setet som har høyest mulig prioritet hos hver person og sjekker om det er tilgjengelig. Hvis det er tilgjengelig "setter" personen seg og koden hopper videre til neste person. Hvis det ikke er tilgjengelig sjekker metoden om setet på 2. prioritet er ledig - osv.

     

    Seats::showPlacements() viser hvor alle har satt seg.

     

    De som ikke har fått noen av sine ønskede sitteplasser har ennå ikke satt seg. Hva skal vi gjøre med disse? Be dem sette seg på et tilfeldig, ledig sete etter de andre har satt seg?

    Du sjekker om noen ikke har fått noen av sine ønsker med Seats::showRemaining() metoden.

     

     

    ..som sagt er det mulig jeg har misforstått alt, og det kan hende det er noen "bug(g)s" her. Har ikke testet koden så alt for mye ennå. :)

  8. Bruk en versjon av wget (ett GNU/Linux program) portet til Win32.

    Dette "mellomlagrer" ikke noe sted.

     

    ftp://ftp.sunsite.dk/projects/wget/windows/ssllibs097c.zip -- noen .dll -filer wget bruker (legg dem et sted windows finner dem (i pathen altså))

    ftp://ftp.sunsite.dk/projects/wget/windows/wget-1.9b.zip -- wget binaryen.

     

    Start wget fra kommandolinjen. wget --help for info.

     

    Generellt laster du ned slik:

     

     

    -c gjør at den prøver å resume hvis deler av filen allerede er lastet ned.

    -t0 gjør at den "retryer" eller prøver på nytt uendlig mange ganger hvis nedlastinger timer out.

     

    ..så slipper du å være redd for at en eller annen browser kræsjer og du må starte nedlastingen på nytt.

  9. Litt senere ..

     

    Jeg har lastet ned ett svar som er så generellt at jeg ikke vet hva jeg skal spørre om.

    Jeg har prøvd alt.

    Hva skal jeg gjøre?

     

    Tja - du kan jo spørre han som svarte om flere detaljer da.

     

    Ok. Som hva da?

     

    Nei - bare finn på noe. Lat som om du er den personen som skal svare på spørsmålet og svar på de spørsmålene du tror han hadde stillt.

     

    Åh - OK, jeg tror jeg skjønner ...

     

    Det er bra.

  10. Tja - kanskje - men man bruker ikke programmer til å lage grafikkmoterer i spill f.eks. - man bruker et programmeringsspråk.

     

    Uansett, det du mener er kanskje et program som Maya?

    Maya er "fritt" nå, i hvertfall for "non commerical use": http://www.alias.com/eng/index.shtml

     

    Til linux finnes Blender: http://www.blender3d.com/

     

    Eller kanskje Pov-Ray: http://www.povray.org/ -- som finnes for både Linux og Windows.

     

    Jeg vet ikke om disse er bra eller ikke - jeg er bare en "code-monkey". :)

  11. Bare sånn at jeg er sikker på at jeg eller noe andre ikke missforstår:

     

    Angående moderator-rettigheter litt ovenfor her så mente (i hvertfall) jeg at prosjekt-lederen, han/hun som startet prosjektet, hadde moderator-rettigheter for sitt egne prosjekt-forum og kun det. Ikke for alle programmerings-forumene som en helhet altså .. :o

     

    Hvis dette er teknisk mulig er dette en fordel for de som skal bruke forumet som et slags "Content Management System" for prosjektet sitt og omrokkere og eventuellt prioriterte poster og hva nå ikke.

     

    Noe sånnt som dette: http://nostdal.net/forum/viewforum.php?f=2 (gammelt innhold som trenger oppdatering riktig nok ..)

     

    Kanskje vi får i gang et skikkelig norskt programmerings-samfunn her etter hvert i tillegg til forumet. Ikke bare en sammling med RSS-feeds og generelle nyheter (som er det de fleste "vanlige" sider er), men et sted der det faktisk skjer noe - et sted det skrives om i nyheter altså. :)

  12. Jeg kom på, i mine øyne, en kjempe god idé for struktur her:

     

    Slik som invictus sa nesten:

     

    Programmering

    - Språk

    -- C++

    -- Delphi

    -- C#

    -- osv

    - Emne

    -- Multimedia

    -- Nettverk

    -- Opengl

    -- Directx

    - Prosjekter

    -- Prosjekt 1

    -- Prosjekt 2

    -- "Matrix" (et foreløpig navn på et prosjekt noen her på forumet jobber med)

    -- osv.

     

    Med moderator/administrator-rettigheter i hvert prosjekt-forum for hver prosjekt eier/eiere.

  13. Det blir spennende med et nytt forum og jeg håper det går bra og at det viser seg å være en bra eller bedre forumløsning.

    Det er vel stort sett det alle tenker.

     

    Jeg er i grunn fornøyd med sånn som det er nå - så ingen store forandringer sånn ellers med tanke på struktur for min del i hvertfall.

     

    Det eneste jeg savner er muligheten for at linker åpnes i samme vindu når man klikker på dem (kun linker som leder til andre poster i forumet altså) - men dette har jeg visst spurt om tidligere og fått klart "nei" som svar på. Så det blir kanskje ikke aktuellt.

     

    Uansett - ser frem til nytt forum. 24. Okt. -- det er det da det skiftes?

  14. 1. Finn programvare som ligner og har de egenskapene du har lyst å ha i ditt eget program.

     

    2. Finn ut hvilket språk de er skrevet i .. (noen her på sourcecode.no vet sikkert)

     

    3. .. og lær dette språket! :)

     

    Finn mange programmer som matcher og har de egenskaper du ser for deg at du vil ha i dine egne programmer.

    Hvis du er heldig finner du en gruppe programmer som alle er skrevet i samme språk - blir lettere å velge da.

×
×
  • Opprett ny...