Programmeringsolympiaden 2016

Relevanta dokument
Programmeringsolympiaden 2017

Programmeringsolympiaden 2018

Programmeringsolympiaden 2015

Programmeringsolympiaden 2014

Programmeringsolympiaden 2010 Kvalificering

Programmeringsolympiaden 2009 Kvalificering

Programmeringsolympiaden 2011 Kvalificering

Programmeringsolympiaden 2013

Programmeringsolympiaden 2012 Kvalificering

Programmeringsolympiaden 2008 Kvalificering

UPPGIFT 1 V75 FIGUR 1.

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Tisdagen 26 april Tentamen består av 8 sidor

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

UPPGIFT 1 LAMELLER. Minsta antalet hål: 1. Första lamellen? Andra lamellen? Minsta antalet hål: 3

UPPGIFT 1 VÄNSKAPLIGA REKTANGLAR

Problem: FIL File Paths

kl Tentaupplägg

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

Högstadiets matematiktävling 2016/17 Finaltävling 21 januari 2017 Lösningsförslag

Tentamen TEN1 HI

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Uppgift 1 ( Betyg 3 uppgift )

Programmeringsolympiaden Kvalificering mars 2005 FIGUR 1.

Extramaterial till Matematik Y

Manual för banläggning i OCAD IF ÅLAND

Tentaupplägg denna gång

Tentamen TEN1 HI

a = a a a a a a ± ± ± ±500

UPPGIFT 1 EURO. Utdata: Två rader, som för indata ovan, ser ut som följer: Före resan: bank 1 Efter resan: bank 3

kl Tentaupplägg

Kvalificeringstävling den 29 september 2009

Svar och arbeta vidare med Student 2008

TDP Regler

Kängurutävlingen Matematikens hopp

UPPGIFT 1 WILL ROGERS FENOMEN

Valmodulen Gymnasiet Extens 9.5 / Dexter /RB

kl Tentaupplägg

UPPGIFT 1 TVETYDIGA DATUM

kl Tentaupplägg

Programmering Grundkurs Laboration 1

Avdelning 1, trepoängsproblem

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

kl Tentaupplägg

NetBeans 7. Avsikt. Projektfönster

Nonogram

5HVLVWHQVWDEHOO 'DWD3DUWQHU. Er partner inom data

Tentaupplägg denna gång

Symmetri är ett begrepp, som kan berika matematikstudierna i alla åldrar.

Välkommen till Kängurutävlingen Matematikens hopp 17 mars Student för elever på kurs Ma 4 och Ma 5

ÖVNINGSTENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 10:15-13:15. Torsdagen 20 maj Tentamen består av 4 sidor.

Programmering. Scratch - grundövningar

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Matematik klass 3. Vårterminen. Anneli Weiland Matematik åk 3 VT 1

Ett enkelt Kalkylexempel - Fruktaffären

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Programmeringsolympiadens final 2012 TÄVLINGSREGLER

Tentaupplägg denna gång

Pangea Matematiktävling FRÅGEKATALOG. Första omgång 2016 Årskurs 9

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Kängurutävlingen Matematikens hopp

kl Tentaupplägg

kl Tentaupplägg

NetBeans 5.5. Avsikt. Projektfönster

UPPGIFT 2 KVADRATVANDRING

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll

Kvalificeringstävling den 28 september 2010

Uppgift 1a (Aktiekurser utan poster)

DUGGA Tentaupplägg

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

A: 3 B: 4 C: 5 D: 6 E: 7 Ryssland

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

Regler för Robotfemkamp under Robot-SM 2011

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

kl Tentaupplägg

Problemdemonstration 1

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Uppgift 1. Kylskåpstransporter

Välkommen till Kängurutävlingen Matematikens hopp 2019 Cadet för elever i åk 8, 9 och för elever som läser kurs 1a, 1b, eller 1c

Tentaupplägg denna gång

Kvalificeringstävling den 26 september 2017

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen i EDA011 Programmeringsteknik för F, E, I, π och N

kl Tentaupplägg

Innehåll och förslag till användning

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215/TIG091

A: måndag B: tisdag C: onsdag D: torsdag E: fredag. Vilken av följande bitar behöver vi för att det ska bli ett rätblock?

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Games och Speedstakes for dummies, på svenska

Kängurutävlingen Matematikens hopp 2009 Benjamin för elever i åk 5, 6 och 7

Distriktsfinal. Del 1: 7 uppgifter Tid: 60 min Maxpoäng: 21 (3p/uppgift)

kl Tentaupplägg

Säkerhetsinställningar, websolen. Innehåll

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

2-5 Decimaltal Namn: Inledning. Vad är ett decimaltal, och varför skall jag arbeta med dem?

Att hämta raps-data via Internet

Dialect Unified MAC-klient

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Transkript:

Programmeringsolympiaden 2016 TÄVLINGSREGLER ÖR SKOLKVALET Tävlingen äger rum på av skolan bestämt datum under fyra timmar effektiv tid. Eleven ska i förväg komma överens med läraren om att använda egen dator eller en som skolan tillhandahåller. I vilket fall som helst måste eleven befinna sig i av läraren bestämd lokal på skolan. Tävlingen består av fem uppgifter som vardera ska lösas genom ett datorprogram i valfritt programmeringsspråk. Dina lösningar kommer att testköras med förpreparerade indata. Om inget annat anges, testas varje uppgift med 5 testfall, som vardera ger 1 poäng om ditt program skriver ut korrekt svar inom en exekveringstidsgräns av 5 sekunder. Det är ofta olika begränsningar på de olika testfallen, t.ex. storleken på indata eller andra inskränkningar. Detta anges i uppgiften. Observera att det kan vara helt olika svårighetsgrad på en uppgift beroende på dessa skillnader. Det kan därför vara lättare att få delpoäng på en uppgift som verkar svår än att få full poäng på en uppgift som verkar lättare. Informationen om delpoäng är därför extremt viktig för att planera sin tävling. Ingen test av indata behöver göras, den följer specifikationerna i uppgiften. Rättningen utförs på samma eller likvärdig dator. Ändringar i källkoden tillåts ej efter tävlingen. Om programmet inte kan kompileras ges 0 p. på uppgiften. Om något av följande inträffar ger det testfallet 0 poäng, men programmet fortsätter testas med övriga testfall. Exekveringstiden överstiger 5 sekunder Exekveringsfel (run time error) el svar Deltagandet är individuellt vilket bland annat innebär att inget utbyte av idéer eller filer får ske under tävlingen. Hjälpmedel: Valfritt skriftligt material, material som finns installerat på datorn samt material som finns tillgängligt på internet. Det är inte tillåtet att aktivt kommunicera på internet (t.ex. chatta eller ställa frågor till ett forum) utan endast att söka efter information. Räknedosa är tillåten. Tävlingsbidraget ska lämnas in i form av källkodsfiler som läggs på utdelat minne eller i en av läraren angiven hårddiskkatalog. ilerna ska döpas till uppg1...uppg5 med passande filtillägg. Ingen hänsyn tas till andra filer. Var noga med att lämna in den korrekta versionen av ditt program. Kanske ses vi på den fullspäckade finalhelgen på Spotifys huvudkontor i februari, där landslagsplatser till tävlingar i inland och Ryssland står på spel. Lycka till! 1

UPPGIT 1 ÖRVIRRAD ÖRELÄSARE Bjarki undervisar på en kurs på universitetet, men är inte särskilt organiserad av sig. Särskilt förvirrad blir han av att antalet föreläsningar varierar från vecka till vecka. örsta veckan håller Bjarki sina A schemalagda föreläsningar. Men varje vecka utom den första kommer han att förutsätta att schemat är likadant som föregående vecka. Andra veckan håller han alltså exakt A föreläsningar igen. Därför kan det ibland hända att Bjarki håller lektion inför tomt klassrum och ibland att han inte dyker upp när han ska. I slutet av veckan får han dock ett argt brev av sin chef med vilka tider han skulle hållit föreläsningar och kommer istället att använda dessa tider veckan därpå. Skriv ett program som, givet antalet schemalagda föreläsningar varje vecka, skriver ut antalet föreläsningar Bjarki håller inför tomma klassrum samt antalet föreläsningar Bjarki missar. Det är aldrig mer än föreläsningar under en vecka och tiderna fylls alltid på från början av veckan utan luckor (se figuren). Kursen pågår högst veckor. Mån fm Mån em Tis fm Tis em Ons fm Ons em Tor fm Tor em re fm re em Vecka 1 Vecka 2 Vecka 3 Vecka 4 IGUR 1. Schemat i det första exemplet. markerar schemalagda föreläsningar. En blå cirkel markerar att Bjarki håller lektionen inför tomt klassrum och en röd triangel markerar att han inte dyker upp. Körningsexempel 1 Antal veckor? 4 Vecka 1? 1 Vecka 2? 3 Vecka 3? 2 Vecka 4? 4 Tomma: 1 Missade: 4 Körningsexempel 2 Antal veckor? 5 Vecka 1? 4 Vecka 2? 1 Vecka 3? 5 Vecka 4? 3 Vecka 5? Tomma: 5 Missade: 11 Körningsexempel 3 Antal veckor? 2 Vecka 1? Vecka 2? Tomma: 0 Missade: 0 2

UPPGIT 2 SIERSUMMA Givet ett heltal N, bestäm det minsta talet som är större än N och har samma siffersumma som N. Siffersumman av ett heltal är summan av dess siffror. Till exempel har 550 siffersumman +5+5+0 = 1 och har siffersumman ++ = 27. Poängsättning ör testfall värt 1 poäng gäller att 1 N ör testfall värt 1 poäng gäller att 1 N 0 ör testfall värda 2 poäng gäller att 1 N < 000 ör testfall värt 1 poäng gäller att 1 N < 20 yra körningsexempel N? 8 Svar: 17 N? 2 Svar: 11 N? 200 Svar: 01 N? 550 Svar: 604 3

UPPGIT 3 KULRAMEN Lille Simon har fått en kulram i present. Kulramen har R rader och i varje rad fanns från början kulor, så att man kunde representera R-siffriga decimaltal en siffra på varje rad. Om en rad hade X kulor på vänstra sidan, sedan ett mellanrum och övriga kulor på höger sida representerade raden siffran X. 0 3 7 = 037 IGUR 2. Så här kunde Simons kulram (med R = 4) se ut innan han började äta upp kulorna. Då var det lätt att översätta ställningen till ett decimaltal. Tyvärr tyckte Simon att kulorna på ramen såg väldigt smaskiga ut, och åt helt enkelt upp några kulor. Det finns dock minst en kula kvar på varje rad. Simon lärde sig snabbt att räkna på sin nya kulram. Han representerar talet där alla kulor är på högersidan som talet 0, och adderar sedan 1 precis som han skulle ha gjort på en vanlig kulram, genom att flytta en kula från höger till vänster på den nedersta raden som har någon kula kvar på höger sida (låt oss kalla den -raden) samt flytta alla kulor på raderna nedanför -raden till höger sida (om inte -raden är den nedersta raden). Om 1 adderas när alla kulorna på alla rader redan är på vänster sida (så att det inte finns någon -rad) så flyttas alla kulorna till höger så att resultatet blir 0. 0 1 2 6 7 8 IGUR 3. yra exempel på hur Simon adderar 1 på den kulram som återfinns i de två första exemplen. Dubbelpilen markerar -raden. Simon håller på att räkna sandkornen i sin sandlåda och skulle behöva hjälp att skriva ett program som, givet ett visst utgångsläge på kulramen, räknar ut hur kulramen ser ut när han N gånger har adderat 1. Programmet ska fråga efter antalet rader (R), antalet kulor till vänster respektive höger på varje rad (uppifrån och ned), samt slutligen talet N. Programmet ska skriva ut R rader med två tal på varje rad: antalet kulor till vänster respektive höger på varje rad efter additionerna. 4

Poängsättning ör testfall värt 1 poäng gäller att R = 4, N 0, och det finns 2 kulor på varje rad. ör testfall värda ytterligare 2 poäng gäller att R = 4 och N,000. ör testfall värda 2 poäng gäller att R 12 och N 12. Körningsexempel 1 Antal rader? 4 Rad 1, vänster? 0 Rad 1, höger? 4 Rad 2, vänster? 0 Rad 2, höger? 2 Rad 3, vänster? 1 Rad 3, höger? 2 Rad 4, vänster? 0 Rad 4, höger? 1 Talet N? 6 0 4 1 1 0 3 0 1 Här går vi från talet 2 till talet 8 i figuren ovan. Körningsexempel 2 Antal rader? 4 Rad 1, vänster? 2 Rad 1, höger? 2 Rad 2, vänster? 2 Rad 2, höger? 0 Rad 3, vänster? 2 Rad 3, höger? 1 Rad 4, vänster? 1 Rad 4, höger? 0 Talet N? 85 1 3 1 1 1 2 0 1 Här passerar vi talet 0 på vägen. Körningsexempel 3 Körningsexempel 4 Antal rader? 4 Rad 1, vänster? 1 Rad 1, höger? 1 Rad 2, vänster? 0 Rad 2, höger? 2 Rad 3, vänster? 2 Rad 3, höger? 0 Rad 4, vänster? 1 Rad 4, höger? 1 Talet N? 37 2 0 1 1 2 0 2 0 Här är det exakt 2 kulor på varje rad. Antal rader? Rad 1, vänster? 4 Rad 1, höger? 5 Rad 2, vänster? 7 Rad 2, höger? 2 Rad 3, vänster? 8 Rad 3, höger? 0 Rad 4, vänster? 6 Rad 4, höger? 3 Rad 5, vänster? 3 Rad 5, höger? 5 Rad 6, vänster? 4 Rad 6, höger? 4 Rad 7, vänster? 1 Rad 7, höger? 8 Rad 8, vänster? 0 Rad 8, höger? Rad, vänster? 7 Rad, höger? 1 Rad, vänster? 2 Rad, höger? 6 Talet N? 8765432 1 8 5 4 1 7 0 7 1 1 7 4 5 3 6 0 8 2 6 5

UPPGIT 4 CHERIMOYOR arah älskar den exotiska cherimoya-frukten. Den säljs bara en dag om året i Sverige, men arah har givetvis passat på att köpa några cherimoyor just denna dag. Cherimoyorna kan vara olika mogna när hon köper dem. Mer precist är varje cherimoyafrukt ätmogen under totalt tre dagar. Vi säger att frukten blir ätmogen en viss dag. öre dess kan man inte äta den och efter de tre dagarna måste den slängas. arah vill få ut så mycket som möjligt utav cherimoyasäsongen. Hon vill maximera njutningen, som räknas ut såhär: ör en given dag får hon njutningspoäng för den första cherimoyan, därefter för den andra, 8 för den tredje o.s.v. Hon orkar aldrig äta mer än cherimoyor på en dag. Skriv ett program som räknar ut hur många njutningspoäng arah som mest kan få ut under årets cherimoyasäsong. Programmet ska fråga efter antalet dagar N (högst 15) och hur många cherimoyor som blir ätmogna varje dag (högst 30). Det är alltså under N+2 dagar som det är aktuellt att äta cherimoyor. Programmet ska skriva ut hur många njutningspoäng arah som mest kan få med den bästa ätstrategin. Poängsättning ör testfall värda 3 poäng kommer N vara högst 5. ör full poäng så ska ditt program klara N upp till 15. Körningsexempel 1 Antal dagar? 3 Mognar dag 1? 18 Mognar dag 2? 0 Mognar dag 3? 2 Svar: 155 Körningsexempel 2 Antal dagar? 8 Mognar dag 1? 3 Mognar dag 2? 0 Mognar dag 3? 1 Mognar dag 4? 2 Mognar dag 5? 0 Mognar dag 6? 0 Mognar dag 7? 3 Mognar dag 8? 6 Svar: 144 Körningsexempel 3 Antal dagar? 2 Mognar dag 1? 30 Mognar dag 2? 30 Svar: 220 Dag 1 2 3 4 5 6 7 8 Illustration av det andra exemplet. Varje ruta symboliserar den tredagarsperiod då en viss cherimoya kan ätas. Själva frukten är inritad på den dagen som arah äter den och talet på frukten visar njutningspoängen den ger upphov till (det finns andra lösningar som ger samma maximala summa). 8 6

UPPGIT 5 RÄTBLOCKET Rätblocket är ett mobilspel som snabbt har blivit otroligt populärt. Spelet går ut på att man genom att vinkla mobilen åt olika håll ska få ett rätblock att rulla från cell A till cell B på en bana. Rätblocket har storlek 1x1x2 och banan är ett tvådimensionellt bräde med celler av storlek 1x1. Vissa celler är fria, vilket betyder att rätblocket kan röra sig fritt på dem, medan vissa celler är blockerade. Det är inte möjligt att röra sig utanför banan. Beroende på om rätblocket står upp eller ligger ner så ockuperar det 1 eller 2 celler. I början av spelet så står blocket upp i cellen markerad med ett A och målet är att flytta det så att det står i cellen markerat med ett B (det räcker alltså inte med att halva blocket ligger på cell B). En förflyttning av blocket kan göras i 4 olika riktningar - upp, ner, höger eller vänster - och en förflyttning gör att blocket rullar över i den givna riktningen (givet att det inte är en blockerad cell i vägen eller banan tar slut). ör att tydligare visa hur en förflyttning går till så är här början på en lösning till exempelfall 1: IGUR 4. Halva lösningen till det första exempelfallet. Rätblocket flyttas först ett steg till höger, sedan två steg nedåt och till sist ett steg åt vänster. På mer avancerade banor så förekommer även så kallade modulo-celler. Dessa är celler som kan befinna sig i två olika tillstånd,0eller1. I tillstånd0så beter sig en modulo-cell precis som en fri cell som rätblocket kan röra sig på. I tillstånd 1 så är dock moduloceller upphöjda och beter sig som blockerade celler. Det kan även finnas växel-celler (markerade med ett c) utplacerade på banan. När rätblocket ställs på en växel-cell så ändras tillstånden på alla modulo-celler (0 blir till 1 och vice versa). Observera att även på en växelcell måste blocket stå upp för att det ska räknas. IGUR 5. Det tredje exempelfallet, före och efter att växeln har aktiverats. Banorna är designade så att det alltid finns en giltig lösning. Din uppgift är att beräkna det minsta antal förflyttningar som behövs för att lösa banan, d.v.s. flytta rätblocket från cell A till cell B. 7

Indata På denna uppgift bör du skriva programmet så att hela indatan kan kopieras klistras in vid testningen. Programmet behöver därför inte föra någon dialog med användaren. Om du är osäker kan du välja att göra en dialog istället. Du kommer först att få en rad med två heltal N och M. Detta betyder att banan har N rader och M kolumner (3 N,M 7) De följanden raderna harm tecken var och beskriver hur banan ser ut. öljande tecken kan förekomma: A eller B: beskriver banans start- respektive slut-positioner.. (en punkt): beskriver en fri cell. #: beskriver en blockerad cell. 0 eller 1: beskriver en modulo-cell med givet start-tillstånd. c: beskriver en växel-cell Det är garanterat att varje bana innehåller precis ett A och ett B. Poängsättning ör testfall värda 2 poäng så har banorna inga modulo-celler. ör de resterande 3 poängen så behöver din lösning även kunna hantera modulo-celler. Körningsexempel 1 3 3 A.......B Svar: 8 Körningsexempel 2 3 5 A#.........#B Svar: 14 Körningsexempel 3 3 7 A..#....B.1.....c#... Svar: 27 8