#scene.no bmp2gif compo ----------------------- Versjon 1 - Lag et lite C-program som mulig som konverterer et bmp-bilde til et gif-bilde på en optimal måte. - Både størrelsen på programmet (sourcen) og størrelsen på gif-filene teller. - GIF-bildene skal følge GIF89a-standarden. - Spørsmål om compoen tas i #scene.no. Filer ----- - bmp2gif-rules.txt : denne fila - bmp2gif-ref.c : referanseimplementasjon - data/ : katalog med test-bilder Hvordan være med ---------------- - Alle bidrag skal sendes i mail til bmp2gif@titsandasses.org. Send bidraget som et vedlegg som .zip, .rar, tar.gz, tar.bz2, .gz eller .bz2. Hvis du ikke vil at jeg (neon) skal ha mulighet til å se bidraget før deadline kan du sende en MD5 av bidraget. - Navnet på bidraget skal være .c. - Putt "bmp2gif compo" i subjectet på mailen. - Deadline er søndag 24. mai 2009 kl 2100 CEST. Størrelse og poengsum --------------------- - Størrelsen på programmet måles i antall bytes c-sourcen er på. Newlines teller som en byte. Sørg for at du bare har LF, ikke CRLF på slutten av hver linje. - Størrelsen på GIF-bildene måles i antall bytes. - Den totale scoren er source-size + gif-size (hvor gif-size er størrelsen på de 8 konverterte test-bildene). Speselle regler --------------- - Programmet skal ta to filnavn som kommandolinjeargumenter. Det første filnavnet er bmp-fila som skal konverteres, det andre er gif-fila som skal skrives: ./entry bilde.bmp bilde.gif - BMP-bildene kan antas å være 8-bits uten kompresjon. Siste linje kommer først (dvs at høyden er positiv). - BMP-bildene kan antas å ha en maks størrelse på 2048 x 2048 punkter. - Programmet trenger ikke håndtere ugyldig input eller feil. - GIF-filene skal følge standaren, dvs at man ikke kan droppe siste byte i lzw-strømmen og slikt. - GIF-filene skal kunne åpnes i Firefox, men bør også kunne åpnes i andre browsere og programmer som Photoshop, Gimp etc. - Programmet skal håndtere alle BMP-filer som oppfyller kravene, selv om bare de 8 test-filene teller i resultatet. - Output-bildene skal være identiske med input-bildene etter konvertering til 24-bits farger. - Programmet må ikke bruke mer enn 1 minutt per fil i test-settet på min maskin (2.2 GHz Intel Core 2 Duo). - Programmet må ikke bruke mer enn 2 GB ram. Generelle regler ---------------- - Koden skal kompilere og kjøre korrekt med gcc4 på Linux og OS X og Visual Studio 9 på Windows. - Programmet skal kompilere og fungere på 32-bits little-endian-maskiner. - Inline assembler/binærkode er ikke tillatt - Programmet skal kompileres slik: - cl program.c (visual c) - gcc program.c -lm -o program (gcc) - Det er ikke lov å kjøre eksterne programmer fra programmet. - Warnings er selvsagt tillatt, og oppfordres. - Hvis en funksjon (også main()) skal returnere en verdi kan man *ikke* anta at en manglende return fører til at funksjonen returnerer 0. - Programmet kan anta at globale, uinitaliserte variabler blir initalisert til 0 (de havner i bss). - Programmet kan ikke anta hva uinitialiserte variable på stacken er, og skal heller ikke anta hvilke rekkefølge variabler ligger i (dvs ingen smarte buffer under/overflow-triks). - Programmet skal ikke gjøre noe mer enn det som er spesifisert i oppgaven. - Bidrag som bryter en eller flere av reglene blir diskvalifisert. Nyttige lenker -------------- - http://www.w3.org/Graphics/GIF/spec-gif89a.txt - http://en.wikipedia.org/wiki/Graphics_Interchange_Format - http://en.wikipedia.org/wiki/BMP_file_format - http://en.wikipedia.org/wiki/Lempel-Ziv-Welch