Programmeringsolympiaden 2013

Relevanta dokument
Programmeringsolympiaden 2010 Kvalificering

Programmeringsolympiaden 2011 Kvalificering

Programmeringsolympiaden 2012 Kvalificering

Programmeringsolympiaden 2009 Kvalificering

Programmeringsolympiaden 2018

Programmeringsolympiaden 2015

Programmeringsolympiaden 2014

Programmeringsolympiaden 2017

Programmeringsolympiaden 2016

Programmeringsolympiaden 2008 Kvalificering

UPPGIFT 1 V75 FIGUR 1.

Programmeringsolympiadens final 2012 TÄVLINGSREGLER

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

Programmeringsolympiadens final 2009

Problem: FIL File Paths

UPPGIFT 1 FORTSÄTT TALFÖLJDEN

UPPGIFT 1 WILL ROGERS FENOMEN

Programmeringsolympiadens final 2011 TÄVLINGSREGLER

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

Programmering Grundkurs Laboration 1

! "# # # $ # " % & # # '(") " " )## (")"#*+*(, ( - " ' # (") #. % % /

Programmeringsolympiadens final 2010

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

UPPGIFT 2 KVADRATVANDRING

MA2047 Algebra och diskret matematik

Programmeringsolympiaden Final 6 maj 2004

STYRANDE SATSER. 1) Skriv ett program som räknar ut hur många år du har till pensionen. Vi räknar här med att man pensioneras det år man fyller 65 år.

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

π DAGENN A D att Pris nivå Du får tävla on av π vars fel DGE och Bakgrund: Priserna:

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

kl Tentaupplägg

π-dagen TÄVLING & PRIS

Kängurutävlingen Matematikens hopp 2010 Cadet för elever i åk 8 och 9

HI1024 Programmering, grundkurs TEN

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

Tentaupplägg denna gång

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

Tentamen TEN1 HI

kl Tentaupplägg

kl Tentaupplägg

TDP Regler

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

Känguru 2010 Cadet (klass 8 och 9) sida 1 / 6

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

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

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Matematiskt luffarschack

Extramaterial till Matematik X

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

Programmeringsolympiaden Kvalificering mars 2005 FIGUR 1.

3, 6, 9, 12, 15, 18. 1, 2, 4, 8, 16, 32 Nu är stunden inne, då vill vill summera talen i en talföljd

kl Tentaupplägg

1Mer om tal. Mål. Grunddel K 1

kl Tentaupplägg

Föreläsning 3.1: Datastrukturer, en översikt

Kängurutävlingen Matematikens hopp 2011 Student för elever på kurs D och E

Trepoängsproblem. Kängurutävlingen 2014 Junior. 1 Bilden visar tre kurvor med längderna a, b respektive c. Vilket av följande påståenden är korrekt?

HI1024 Programmering, grundkurs TEN

DUGGA Tentaupplägg

kl Tentaupplägg

UPPGIFT 1 VÄNSKAPLIGA REKTANGLAR

A4-papper där det på varje papper står en siffra, på ett papper står det ett decimaltecken. Det kan också finnas papper med de olika räknesättens

Välkommen till. Kängurutävlingen Matematikens hopp 2009 Student för elever på kurs D och E. Kängurutävlingen 2009 Student.

läromedel JVM-mani mani läromedel

Känguru 2019 Student gymnasiet

getsmart Grå Regler för:

kl Tentaupplägg

Känguru 2018 Benjamin (åk 6 och 7)

Manual till BOKEN OM MIG. Skriven eller berättad av mig

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

Ger bilder stöd för förståelsen av och förmågan att minnas kunskapskraven?

UPPGIFT 1 PRESIDENTVALET

Känguru Benjamin (6. och 7. klass) sida 1 / 5

RÄDDA EKVATIONERNA! Cecilia Christiansen

ENKEL Programmering 3

Kängurutävlingen Matematikens hopp 2018 Benjamin

Kängurutävlingen Matematikens hopp 2018 Ecolier

Copéma Tips, extra om version 9

Avdelning 1, trepoängsproblem

Np MaB vt 2002 NATIONELLT KURSPROV I MATEMATIK KURS B VÅREN 2002

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

Välkommen till Kängurutävlingen Matematikens hopp 17 mars Junior för elever på kurs Ma 2 och Ma 3

kl Tentaupplägg

Trepoängsproblem. Kängurutävlingen 2012 Junior

Uppgift 1 ( Betyg 3 uppgift )

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

Tentaupplägg denna gång

Regler. Betygssättning

Avdelning 1, trepoängsproblem

NATIONELLT KURSPROV I MATEMATIK KURS B VÅREN Del I, 9 uppgifter utan miniräknare 3. Del II, 8 uppgifter utan miniräknare 5

TDIU01 - Programmering i C++, grundkurs

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

kl Tentaupplägg

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Svar och arbeta vidare med Benjamin 2008

kl Tentaupplägg

Transkript:

Programmeringsolympiaden 2013 TÄVLINGSREGLER FÖR SKOLKVALET Tävlingen äger rum på av skolan bestämt datum under sex timmar effektiv tid. Tävlingen består av sju uppgifter som alla ska lösas genom ett datorprogram. Uppgifterna ska lösas i valfritt programmeringsspråk. Du får till och med byta språk mellan olika uppgifter. Dina lösningar kommer att testköras med förpreparerade indata. Klarar ditt program alla testerna får du 2 poäng för uppgiften. Delpoäng (1 poäng) kan komma att utdelas då programmet inte klarar alla testerna. Ingen närmare bedömning av programkoden görs. Första uppgiften är gemensam för skolkvalet och onlinekvalet och kan därför alternativt lösas via vår rättningsdomare Kattis, senast söndag 3 februari. För mer information, se www.progolymp.se Samtliga uppgifter leder fram till program vars exekveringstid normalt bör understiga 1 sekund. Om programmets exekveringstid överstiger 10 sekunder bedöms programmet för det testexemplet som felaktigt. Rättningen utförs på samma eller likvärdig dator. Om, vid rättningen, fel uppstår vid kompilering bedöms programmet direkt som felaktigt och lösningen ger 0 poäng. Ingen test av indata behöver göras. Alla testdata följer de specifikationer som givits i uppgiften. Om det trots detta, vid rättningen, uppstår exekveringsfel vid körning av programmet bedöms programmet som felaktigt för det testexemplet. Deltagandet är individuellt vilket bland annat innebär att inget utbyte av idéer eller filer får ske under tävlingen. Internet får inte användas under tävlingen. Hjälpmedel: Valfritt skriftligt material samt de manualfiler som är installerade på datorn. Däremot är det inte tillåtet att söka information på eller kommunicera via internet. 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. Filerna ska döpas till uppg1...uppg7 med passande filtillägg. Ingen hänsyn tas till andra filer. Var noga med att lämna in den korrekta versionen av ditt program. Årets International Olympiad in Informatics (IOI) anordnas i Brisbane, Australien, i juli. Kanske blir du en av dem som representerar Sverige där. Lycka till! Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 1

UPPGIFT 1 KÄNGURUMAMMAN OBS! Denna uppgift är öppen och kan även lösas i efterhand via vår hemsida: www.progolymp.se En kängurumamma ska packa ner sina barn i sin pung. Hon har massor med barn. De två minsta väger bara ett gram var men sen väger varje barn lika mycket som de två föregående tillsammans. Hennes sex minsta barn väger alltså 1, 1, 2, 3, 5 och 8 gram. Mamman orkar bära högst X kilo (och inte ens ett gram mer). Hur många barn kan hon som mest ta med sig? I samtliga tester kommer X vara ett heltal mellan 1 och 1000. Delpoäng ges för svaret på specialfallet X = 1, även om program inte inlämnas. Körningsexempel Talet X? 4 Antal barn: 16 Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 2

UPPGIFT 2 HOPPLEKEN 1 6 4 2 5 3 1 2 3 4 5 6 7 8 9 FIGUR 1. Startställningen i första exemplet. Pilarna visar hur alla barnen utom nummer 4 kan samlas på ruta 3. När kängurumammans barn blivit äldre och står på egna ben, leker de en hopplek (för vad leker kängurur annars?). De har ritat upp N rutor (högst 100) i en rad på marken, numrerade från 1 till N. Eftersom barnen (högst 10 stycken) är olika stora hoppar de olika långt: det första (minsta) barnet hoppar alltid en ruta i taget, det andra barnet alltid två rutor i taget, det tredje barnet alltid tre rutor i taget o.s.v. Givet i vilken ruta varje kängurubarn står från början (alla olika), skriv ett program som räknar ut det maximala antalet barn som kan hamna i samma ruta. De kan göra hur många hopp de vill och de kan även stå stilla, men de får inte hoppa utanför rutorna. Antal barn? 6 Antal rutor? 9 Position för barn 1? 1 Position för barn 2? 7 Position för barn 3? 9 Position för barn 4? 6 Position för barn 5? 8 Position för barn 6? 3 Maximal samling: 5 Antal barn? 4 Antal rutor? 5 Position för barn 1? 4 Position för barn 2? 2 Position för barn 3? 3 Position för barn 4? 5 Maximal samling: 2 Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 3

UPPGIFT 3 LEET SPEAK Pappa Thomas har tröttnat. Sonen Pim gör inget annat än att sitta framför datorn och spela skjutspel. Han spelar så mycket skjutspel att han inte bryr sig om att prata med sin pappa längre. Pappa Thomas har bestämt sig för att försöka ta kontakt med Pim genom att logga in på det där internet och ta reda på vad sonen egentligen sysslar med. För att det inte ska verka misstänkt så vill han prata samma språk som Pims cyberkompisar gör. Han har förstått att språket kallas leet speak, men han behärskar det inte själv. Thomas tog först kontakt med ett konsultbolag och bad dem skriva ett program som översatte meningar från vanligt språk till leet speak. Konsultbolaget ansåg dock att problemet var för svårt. Därför tar nu Thomas det här till nästa nivå, och vänder sig till de tävlade i Programmeringsolympiaden. Kan du hjälpa honom att skriva ett program som översätter meningar från vanligt språk till leet speak? Leet speak är ett substitutionschiffer där varje bokstav i det vanliga alfabetet byts ut mot ett tecken i leet speak-alfabetet. Till din hjälp har du alfabetet för respektive språk: vanligt: leet speak: abcdefghijklmnopqrstuvwxyz 48()3}6#!]X MN09Q2Z7MVWXJZ Programmet ska läsa in en mening: en rad med tecken som kan vara a-z (stora eller små bokstäver), blanksteg eller punkt. Raden avslutas alltid med en punkt, och det finns inga andra punkter i raden. Blanksteg förekommer aldrig i början av meningen och aldrig mer än ett i följd. Programmet ska skriva ut meningen översatt till leet speak. Vanligt? leet speak. Översatt: 337 Z934X. Vanligt? The quick brown fox jumps over a lazy dog. Översatt: 7#3 QM!(X 820WN }0X ]MM9Z 0V32 4 4ZJ )06. Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 4

UPPGIFT 4 MOR OCH FAR Nivå 3 mormormor mor 3 mormorfar mor far 2 morfarmor morfarfar morfar 2 farmormor farmor 2 farmorfar farfarmor far mor 2 farfarfar far 3 2 mormor mor 2 morfar farmor farfar far 2 1 mor far Jonatan Jonatan har insett att man kan referera hur långt bak som helst i släktträdet genom att kombinera mor och far. Sina föräldrar, som vi kallar nivå 1, kan man skriva mor och far, därefter på nivå 2 kan man skriva mormor, morfar, farmor och farfar och så vidare. Efter ett tag blir orden ganska långa, men de kan förkortas om man tillåter lite matematik att komma in i språket. Vi skriver exempelvis om mormormorfarfarmorfar till mor 3 far 2 morfar. Jonatan vill skriva en lista över alla sina förfäder, upp till och med en viss nivå (mellan 1 och 18), på denna form. Hur många heltal behöver han skriva? Nivå? 3 Antal: 8 Nivå? 1 Antal: 0 Körningsexempel 3 Nivå? 10 Antal: 4608 Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 5

UPPGIFT 5 EKVATIONER Ekvationer är viktiga inom matematiken och redan på högstadiet får man lära sig att lösa enklare typer. I den här uppgiften så ska du göra detsamma, men nu med hjälp av datorn. Du ska skriva ett program som läser in en ekvation och löser den. Ekvationerna består av högst 20 tecken och innehåller för enkelhets skull endast ensiffriga tal (0 9), tecknen +,,= och tecknet x, som är den okända variabeln. Det garanteras att varje ekvation innehåller precis ett likhetstecken, och att ekvationerna i övrigt är syntaktiskt korrekta. Närmare bestämt består de av ett antal termer (siffra eller x eller siffra x) och termerna åtskiljs av exakt ett av tecknen +,- eller =. Programmet ska skriva ut det värde på x som löser ekvationen (minst sex decimaler vid behov). Om det inte finns något sådant värde, skriv istället ut Ingen lösning. Om det tvärtom finns oändligt många värden som löser ekvationen, skriv ut Flera lösningar. Delpoäng kommer ges om programmet klarar alla fall med en unik lösning, eller om programmet klarar alla övriga fall. Ekvation? 3x+2=8-x x = 1.5 Ekvation? 0=8+3x x = -2.666667 Körningsexempel 3 Ekvation? x+7-9x=2+5x-3 x = 0.615385 Körningsexempel 4 Ekvation? 3x+5=5-4x x = 0 Körningsexempel 5 Ekvation? 6x=6x Flera lösningar Körningsexempel 6 Ekvation? x+1=x-1 Ingen lösning Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 6

UPPGIFT 6 SOKOBAN I spelet Sokoban rör du dig i ett lagerrum indelat i rutor och ska flytta ett antal lådor (som upptar exakt en ruta) från sina startpositioner (S) till sina målpositioner (M). Följande regler gäller: Du (D) kan bara röra sig vänster, höger, upp eller ned i rutnätet, alltså inte diagonalt. Du kan flytta en låda endast genom att skjuta den framför dig. Endast en låda i taget kan flyttas. Du kan inte gå genom lådor eller väggar (#) och inte heller skjuta en låda genom vägg eller annan låda. Spelet är löst när alla lådor hamnat på målpositioner. Det spelar ingen roll vilken låda som hamnar på vilken målposition. Du ska skriva ett program som spelar Sokoban. Programmet ska fråga efter antal rader (högst 5) och antal kolumner (högst 5) och sedan läsa in en karta över lagerrummet där. betyder tom ruta, # betyder blockerad ruta (vägg), S betyder startposition för låda, M betyder målposition för låda och D betyder din startposition. Det finns alltid lika många S som M (högst 5 stycken) och det finns alltid exakt ett D. Programmet ska skriva ut en rad med tecken (högst 1000) som beskriver hur du ska röra dig för att uppnå målet (H=höger, V=vänster, U=upp, N=ner). Programmet behöver inte hitta den kortaste dragföljden. I alla testfall kommer det att finnas en dragföljd med högst 20 drag. Antal rader: 1 Antal kolumner: 4 Rad 1? #MSD Dragföljd: V Antal rader: 4 Antal kolumner: 3 Rad 1? #.. Rad 2?.SD Rad 3?.#M Rad 4?... Körningsexempel 3 Antal rader: 3 Antal kolumner: 4 Rad 1?.S.M Rad 2?..SD Rad 3? MMS. Dragföljd: NVVUVUHHNHNV Dragföljd: NNVVUUHUHN Kommentar: Samtliga dessa dragföljder är de kortast möjliga. Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 7

UPPGIFT 7 TÄRNINGSSUMMA Tärningen är en klassisk symbol för slump. Slumpen är i teorin rättvis, men det gäller tyvärr inte i praktiken. I synnerhet gäller det inte i denna uppgift, där vi jobbar med orättvisa tärningar. Du kastar ett antal (1 N 100) identiska sexsidiga tärningar exakt en gång var. Du känner till sannolikheten p(i), i = 1,2,3,4,5,6 för att med en tärning få etta, tvåa, trea o.s.v. (du kan anta att sannolikheterna adderar upp till exakt ett). Skriv ett program som beräknar sannolikheten för att summan av tärningarnas utfall blir större än eller lika med ett visst heltalsvärde S, där 1 S 600. Svaret ska vara korrekt med minst 6 decimalers noggrannhet. Delpoäng kommer ges om programmet klarar alla testfall med N 10. Antal tärningar? 2 Talet S? 6 p(1)? 0.2 p(2)? 0.2 p(3)? 0.2 p(4)? 0.2 p(5)? 0.1 p(6)? 0.1 Svar: 0.6 Antal tärningar? 100 Talet S? 353 p(1)? 0.1 p(2)? 0.2 p(3)? 0.15 p(4)? 0.3 p(5)? 0.15 p(6)? 0.1 Svar: 0.432678 Arash Rouhani, Oskar Werkelin Ahlin, Erik Odenman, Simon Lindholm och Pär Söderhjelm 8