#scene.no size-optimized c-compo - Adder ---------------------------------------- Revisjon: 1.1 (2019-04-22) - Lag et program som tar inn to tall på kommandolinjen, legger dem sammen, og skriver ut svaret. - All output skal sendes til stdout. - De to tallene er naturlige tall opp til 256 siffer, altså matcher regexen ^[0-9]{1,256}$ . - Ingen andre inputs vil forekomme (dvs., programmet kan gjøre hva som helst om det kjøres f.eks. uten argumenter). - Linjen skal slutte med newline. Ingen andre tegn skal skrives ut (inkludert ledende nuller). - Programmet (main) skal returnere 0. Eksempler, ikke uttømmende: ./prog 2 2 4 ./prog 0 0 0 ./prog 001 15 16 ./prog 123 456 579 ./prog 456 789 1245 ./prog 999 1 1000 ./prog 100000000000000000000 42 100000000000000000042 Generelle regler ---------------- - Koden skal kompilere og kjøre korrekt under GCC 8. Ved tvilstilfeller vil følgende kompilator brukes: gcc version 8.3.0 (Debian 8.3.0-3) - Programmet skal fungere både på big- og little-endian-maskiner. - Programmet skal kunne kjøre på hvilken som helst CPU som tilfredstiller resten av reglene. - All output skal sendes til stdout med mindre det spesifisert noe annet - Programmet skal returnere *eksakt* det samme som eksempelprogrammet. Returverdien fra main() skal også være den samme som i eksemplet. - Inline assembler er ikke tillatt. - Programmet skal kompileres slik: - gcc program.c -lm -o program - Det er ikke lov å kjøre eksterne programmer fra programmet. - Warnings er selvsagt tillatt, og oppfordres. - Hvis det er en konflikt mellom oppførselen definert i reglene og oppførselen i eksempelprogrammet er det eksempelprogrammet som gjelder. Det er fint om folk sier i fra om dette slik at reglene kan bli oppdatert. Optimalisering -------------- - 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 (pga at 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). - sizeof(int) = 32 bits - sizeof(void*) = 32 eller 64 bits Størrelse --------- - Størrelsen på programmet måles i antall bytes c-sourcen er på. Newlines teller som en byte. Deadline -------- - Deadline er tirsdag 23. april kl 1900, og er forholdsvis absolutt. :-) - Alle bidrag skal sendes i mail til steinar+kodecompo@gunderson.no. Bidraget skal leveres som .zip, tar.gz, tar.xz, .gz eller .xz. - Navnet på bidraget skal være .c. - Subjektet i eposten skal begynne med "[#scene.no adder compo]" - Bidrag som bryter en eller flere av reglene blir diskvalifisert.