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

Relevanta dokument
UPPGIFT 1 WILL ROGERS FENOMEN

UPPGIFT 1 TVETYDIGA DATUM

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

Programmeringsolympiaden 2010 Kvalificering

UPPGIFT 1 V75 FIGUR 1.

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

UPPGIFT 1 FORTSÄTT TALFÖLJDEN

UPPGIFT 1 PRESIDENTVALET

Programmeringsolympiaden Kvalificering mars 2005 FIGUR 1.

Programmeringsolympiaden 2011 Kvalificering

Programmeringsolympiaden 2012 Kvalificering

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

Programmeringsolympiaden Final 6 maj 2004

Tentaupplägg denna gång

UPPGIFT 2 KVADRATVANDRING

Programmeringsolympiaden 2008 Kvalificering

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Programmeringsolympiaden 2009 Kvalificering

Programmeringsolympiaden 2018

Programmeringsolympiaden 2017

Programmeringsolympiaden 2014

Programmeringsolympiaden 2015

Moment Viktiga exempel Övningsuppgifter I Ö5.1b, Ö5.2b, Ö5.3b, Ö5.6, Ö5.7, Ö5.11a

Uppgifter till praktiska tentan, del A. (7 / 27)

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

kl Tentaupplägg

kl Tentaupplägg

Lathund för snabbspar

UPPGIFT 1 VÄNSKAPLIGA REKTANGLAR

Läslandet 2 Ord och meningar

kl Tentaupplägg

Programmeringsolympiaden 2016

Det virtuella tangentbordet

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

+ 4 = 7 + = 9. Del 1, trepoängsuppgifter. A: 6 B: 7 C: 8 D: 10 E: 15 (Vitryssland) 2 Erik har 10 likadana metallskenor.

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

Uppgift 1 (vadå sortering?)

kl Tentaupplägg

kl Tentaupplägg

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

kl Tentaupplägg

Tentaupplägg denna gång

Uppgift 1a (Aktiekurser utan poster)

Programmeringsolympiadens final 2009

Tentaupplägg denna gång

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Lästal från förr i tiden

MATEMATIKPROV, LÅNG LÄROKURS BESKRIVNING AV GODA SVAR

Uppgift 1. Kylskåpstransporter

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

Talmängder. Målet med första föreläsningen:

Block 1 - Mängder och tal

Sidor i boken Figur 1:

Kvalificeringstävling den 28 september 2010

1 Josefs bil har gått kilometer. Hur långt har den gått när han har kört (3) tio kilometer till? km

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

kl Tentaupplägg

Programmering Grundkurs Laboration 1

Icke-linjära ekvationer

Moment Viktiga exempel Övningsuppgifter Ö , Ö1.25, Ö1.55, Ö1.59

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

Känguru 2012 Junior sivu 1 / 8 (gymnasiet åk 1) i samarbete med Jan-Anders Salenius vid Brändö gymnasiet

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående

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

kl Tentaupplägg

Moment Viktiga exempel Övningsuppgifter I

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

matematik FACIT Läxbok Koll på Sanoma Utbildning Hanna Almström Pernilla Tengvall

Kvalificeringstävling den 30 september 2008

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

Extra-bok nummer 3. i matematik

kl Tentaupplägg

Matematiska uppgifter

FACIT 2008 års kalender

Avdelning 1, trepoängsproblem

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

Anteckningar propp SMT2

Avdelning 1, trepoängsproblem

Högstadiets matematiktävling 2018/19 Finaltävling 19 januari 2019 Lösningsförslag

MANUAL CHRONO COMAI Comai AB erbjuder kvalificerade anpassningsbara och Comai AB

Möjligheternas dag årskurs F-1

kl Tentaupplägg

SKOLORNAS MATEMATIKTÄVLING Svenska Matematikersamfundet. Lösningsförslag till naltävlingen den 20 november 2004

TATM79: Föreläsning 2 Absolutbelopp, summor och binomialkoefficienter

UPPGIFT 1 ÖVERSÄTTNING

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

Denna tentamen består av två delar. Först sex enklare uppgifter, som vardera ger maximalt 2 poäng. Andra delen består av tre uppgifter, som

Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den tillämpade.

Lösningsförslag till övningsuppgifter, del V

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

Matematiska uppgifter

Block 1 - Mängder och tal

Komposanter, koordinater och vektorlängd Ja, den här teorin gick vi igenom igår. Istället koncentrerar vi oss på träning inför KS3 och tentamen.

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Torsdagen den 4 juni 2015

HI1024 Programmering, grundkurs TEN

Funktioner. Räta linjen

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

Den räta linjens ekvation

Transkript:

UPPGIFT 1 LAMELLER FIGUR 1. Överst de två lamellerna som de ges till programmet. Underst samma två lameller när den ena förskjutits så att bästa läge uppkommit. I figur 1, övre delen, ser du två lameller, stänger med hål i. Varje lamell är indelad i kvadratiska områden (10 respektive 8 i exemplet) som vart och ett kan ha ett hål. Målet är nu att förskjuta lamellerna relativt varandra (men inte vända någon av dem) så att man får så litet antal genomgående hål som möjligt när man lägger dem intill varandra. I den nedre delen av figur 1 har en sådan förskjutning gjorts, vilket har minskat antalet genomgående hål från tre till ett. Observera att hål i en del av en lamell som skjuter ut utanför den andra lamellen också räknas som genomgående hål. Skriv ett program som frågar efter lamellernas utseende och bestämmer det minsta antalet genomgående hål som kan erhållas genom en förskjutning av lamellerna. Varje lamell beskrivs med en sträng där varje tecken kan vara 0 för ett hål eller 1 för ett solitt område. Antalet tecken anger alltså lamellens längd, som är högst 10. Två körningsexempel: Första lamellen? 10110101 Andra lamellen? 1111100100 Minsta antalet hål: 1 Första lamellen? 100000 Andra lamellen? 10001 Minsta antalet hål: 3 1

UPPGIFT 2 SUMMAN BLIR 1 FIGUR 2. I den här uppgiften får du 9 siffror, som ska kombineras så att uttrycket i figur 2 blir sant. Talen som ska stå i nämnarna består av två siffror och i täljarna av en siffra. Siffrorna i indata kan ges i vilken ordning som helst. Samma siffra kan förekomma flera gånger, men siffran 0 förekommer inte. Om det finns flera lösningar, räcker det att ditt program skriver ut en av dessa. Två körningsexempel: Vilka siffror? 123456789 9/12 + 5/34 + 7/68 = 1 Vilka siffror? 274588812 8/14 + 5/28 + 7/28 = 1 Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 2

UPPGIFT 3 FÖRVIRRANDE SMS 1 2 3 ABC DEF 4 5 6 GHI JKL MNO 7 8 9 PRS TUV XYZ FIGUR 3. Du har fått ett förvirrande SMS. Tydligen har avsändaren haft på siffermod istället för bokstäver och skickat iväg det utan att titta på displayen. Lyckligtvis vet du hur inskrivningen fungerar. Varje bokstav (utom q, w, å, ä och ö som vi bortser från helt i denna uppgift) motsvaras av en siffertangent mellan 2 och 9 enligt figuren ovan. Samma tangent används alltså för att skriva tre olika bokstäver: trycker man en gång blir det den första, trycker man två gånger i snabb följd blir det den andra och trycker man tre gånger i snabb följd blir det den tredje. Vi förutsätter att man aldrig trycker fler än tre gånger. Det finns bara ett problem. Att trycka två gånger på tangent 2 kan betyda antingen ett B eller två A, beroende på hur lång paus man gör mellan tryckningarna och det finns inget sätt att avgöra var i siffersekvensen det har varit paus. Det enda sättet att få reda på vad meddelandet betyder är att titta på varje ord och avgöra vilken tolkning som verkar mest logisk. Du ska skriva ett program som, givet en siffersekvens (högst 10 siffror) som motsvarar ett ord, skriver ut alla tänkbara bokstavskombinationer som avsändaren kan ha avsett att skriva. Vi förutsätter naturligtvis att avsändaren inte har gjort något misstag. Ordningen på de tänkbara orden som programmet skriver ut spelar ingen roll. Två körningsexempel: Siffersekvens? 552662 KAMMA KANA JJAMMA JJANA Siffersekvens? 8888 TTTT TTU TUT TV UTT UU VT Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 3

UPPGIFT 4 ORDFLÄTAN FIGUR 4. I figur 4 ser du en ordfläta med fyra vågräta och fyra lodräta ord. Du ska skriva ett program som, givet en lista med fyrbokstaviga ord, hittar alla möjliga sådana ordflätor. Ett ord får endast användas en gång i varje ordfläta. Programmet ska läsa indata från filen ord.dat. Första raden innehåller ett tal n, där 8 n 800, som anger hur många ord det finns i ordlistan. Sedan följer n rader med ett fyrbokstavigt ord på varje rad. Endast bokstäverna A-Z (versaler) förekommer. Alla ord i filen är olika och de är sorterade i alfabetisk ordning. När du designar din algoritm kan du räkna med att bokstäverna i orden är ungefär jämnt fördelade, så att inte exempelvis nästan alla orden börjar på samma bokstav. Programmet ska skriva ut alla möjliga ordflätor (i godtycklig ordning), separerade med en blank rad. Till givna indata finns alltid minst en lösning. Observera att det till varje ordfläta finns en spegellösning där vågrätt blivit lodrätt och tvärtom. Du avgör själv om du vill ta med båda dessa lösningar eller bara den ena. Körningsexempel: För testfilen blir svaret HALV AREA MISS NASA Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 4

UPPGIFT 5 SKIDÅKNING 5 3 2 4 P 3 2 FIGUR 5. När Olle har en dag i slalombacken vill han naturligtvis spendera så mycket tid som möjligt på skidåkningen och så lite tid som möjligt i liftarna och väntande. Hans optimeringsvilja har dock gått till viss överdrift; han får ägna så mycket tid åt att planera sin åkning att det inte blir särskilt mycket åkt överhuvudtaget. Därför ska du hjälpa honom genom att skriva ett program som beräknar den maximala åktiden. Skidbacken består av ett antal (n) nedfarter och en lift till varje nedfart. Ett exempel visas i figuren ovan. Alla nedfarterna slutar på samma plats, markerad med ett P i figuren. Det är även här alla liftarna startar och det är samtidigt platsen där Olle anländer och avreser med buss. Varje nedfart har en viss skidåkningstid, angiven i hela minuter, samt en lifttid, också i hela minuter, vilken anger hur lång tid det tar att åka upp i den tillhörande liften. Vi förutsätter att inga köer bildas så summan av dessa två tider anger direkt hur lång tid det tar innan man är tillbaka vid P om man väljer denna nedfart. Olle har också en maximal totaltid t, angiven i minuter. Efter senast t minuter måste han vara tillbaka vid P för att inte missa bussen hem. Vilken backe som är roligast att åka i är helt oviktigt för Olle och han har heller inget emot att åka samma nedfart gång på gång. Det enda som spelar roll är att den sammanlagda tiden han ägnar åt skidåkningen blir så stor som möjligt. Programmet ska läsa indata från filen skidor.dat. På första raden står heltalen n (antal nedfarter) och t (maximal totaltid), där 1 n 100 och 2 t 1000. Därefter följer n rader med två heltal på varje rad: skidåkningstiden respektive lifttiden för varje nedfart. Dessa tal ligger alla i intervallet 1..t. Totaltiden räcker alltid till att åka minst en nedfart. Programmet ska skriva ut ett enda heltal, den maximala sammanlagda skidåkningstiden. Körningsexempel: För filen skidor.dat med innehållet 3 13 5 3 4 2 2 3 ska programmet ge svaret 8 Kommentar: I det här fallet är det faktiskt bättre att ta den andra nedfarten två gånger och vara tillbaka efter 12 minuter än att ta den första och tredje varsin gång och vara tillbaka efter 13 minuter, eftersom det senare alternativet endast ger 7 minuter skidåkning. Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 5

UPPGIFT 6 RINNANDE VATTEN 00000 11111 00000 11111 00000 11111 FIGUR 6. Till vänster: Situationen efter 50 sekunder då glas 2 på tredje raden börjar rinna över. Till höger: Motsvarande situation efter 136.66666... sekunder då glas 2 på femte raden börjar rinna över. Kantglasen på fjärde raden är fyllda till exakt 5/6 och mittglasen på sjätte raden är exakt halvfyllda. En konstutställning har uppställt en pyramid av identiska glas, där den översta raden har ett glas, raden under har två glas, raden därunder tre glas osv. Vatten rinner ner i det översta glaset i jämn hastighet. Det tar exakt 10 sekunder att fylla det glaset. När glaset är fullt och svämmar över kommer det tillrinnande vattnet istället att rinna ner i de två glasen på rad två, lika snabbt i varje. Efter ytterligare 20 sekunder kommer således de två glasen på rad två att vara fyllda. Glasen på rad tre kommer dock inte fyllas lika snabbt, då vatten rinner ner i det mittersta glaset dubbelt så snabbt som i de andra två glasen på samma rad. Skriv ett program som bestämmer efter hur många sekunder ett givet glas i pyramiden börjar rinna över. Programmet ska fråga efter en rad r (2 r 50) och vilket glas g på raden räknat från vänster (1 g r). Svaret ska vara korrekt med minst 3 decimalers noggrannhet, utom för de allra högsta tiderna där hänsyn tas till begränsad numerisk precision (men se till att använda double). Körningsexempel: Rad? 5 Glas? 2 Det tar 136.667 sekunder. Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 6

UPPGIFT 7 AVSTÅNDSTABELL FIGUR 7. Avståndstabellen i exemplet och det kortaste vägnätet som uppfyller den Som supplement till vägkartor finns ofta en avståndstabell. Den innehåller samtliga kortaste avstånd mellan ett antal (n) utvalda städer och har formen av en n n tabell. Ofta är endast halva tabellen ifylld eftersom avståndet mellan A och B är samma som mellan B och A. Vi antar nu att vägar inte korsar varandra utanför städerna. Det betyder att om kortaste avståndet mellan A och B är x km finns det två möjligheter. Antingen går det en väg direkt mellan A och B, som har längden x km, eller också måste man passera ett antal andra städer på vägen och om man gör det på det sätt som ger kortast totala vägsträcka är denna x km. Du ska skriva ett program som, givet en avståndstabell, räknar ut den kortast möjliga totala längden på hela vägnätet. Programmet ska läsa indata från filen tabell.dat. På första raden står ett heltal n,(3 n 100), antalet städer. Sedan följer avståndstabellen given som n(n 1)/2 rader med vardera ett heltal i intervallet 1... 10000, det kortaste avståndet (i kilometer) mellan varje par av städer, ordnat på följande sätt (se även figuren ovan). De första n 1 talen är avstånden mellan stad 1 och, i tur och ordning, städerna 2,3,4... n. De följande n 2 talen är avstånden mellan stad 2 och, i tur och ordning, städerna 3,4,5... n och så vidare. Det sista talet är sålunda avståndet mellan stad n 1 och stad n. Programmet ska skriva ut den minsta totala längden på vägnätet för att avståndstabellen ska vara uppfylld. I samtliga testfall finns det alltid minst ett möjligt vägnät. Exempelvis, om n = 3, så kan inte avstånden i indata vara (1,2,4) eftersom det kortaste avståndet mellan stad 2 och stad 3 inte kan vara större än 1+2. Däremot kan man tänka sig indata (1,2,3), som ger svaret 3 eftersom det kortast möjliga vägnätet inte har någon väg mellan stad 2 och stad 3. Om indata däremot hade varit (1,2,2) hade det behövts vägar mellan alla städer och svaret hade blivit 5. Körningsexempel: För filen tabell.dat med innehållet 5 6 15 2 6 9 8 12 16 18 4 ska programmet ge svaret 55 Jimmy Mårdell, Håkan Strömberg, Pär Söderhjelm 7