Stjerneoppgaver uke 5:  19.- 26. sep (INF1000 - Høst 2012)

Disse oppgavene er litt vanskeligere enn de vanlige ukeoppgaver, først og fremst ment for de som ønsker litt større utfordringer innenfor ukens tema.
 

  1. Stjerneoppgave 1: Fibonacci-tallene
    (a) Løkker: Lag et program som skriver ut de 15 første tall i Fibonaccifølgen.  Følgen er definert ved at de to første tall er 0 og 1, og hvert neste tall er summen av de to foregående.  Utskriften skal bli:
    0  1  1  2  3  5  8  13  21  34  55  89  144  233  377
    
    Mer info: Fibonacci-tallene forekommer mye i naturen, bl.a. i tregrener, blomster, kongler og kaniner.

    (b) Metoder: Endre strukturen i Fibonacci-programmet du lagde ovenfor slik at det følger malen fra læreboka og forelesningene, med en kontrollklasse øverst, etterfulgt av en hjelpeklasse for metodene.  Bruk tre metoder i hjelpeklassen: en ordreløkke som skriver ut følgende meny, og en metode for hvert av de 2 menyvalgene:
    1. Skriv ut de 15 første tall i Fibonaccifølgen
    2. Test om et tall hører til følgen
    
    Metoden for ordre 2 ber bruker taste inn et tall, og går så i en løkke som genererer Fibonacci-tallene frem til det bruker-inntastede tallet.  Deretter gis det melding til bruker om tallet hørte til følgen eller ikke. 

     
  2. Stjerneoppgave 2: Nærmeste Fibonacci-tall (middels vanskelig)
    Utvid ordre 2 i oppgaven "Fibonacci-tallene" over slik at den også sier hvilket Fibonacci-tall er nærmest det bruker-inntastede tallet. Hvis to er like nærme, f.eks. hvis bruker tastet inn "4", skriv ut begge (i dette tilfellet "3" og "5").

     
  3. Stjerneoppgave 3: Sudoku hjelpeprogram (middels vanskelig)
    (a) Lag et program som leser inn en Suduko-oppgave fra fil og lagrer de forhåndsutfylte tallene i en 2-dimensjonal array.  Deretter går programmet i en løkke som spør brukeren om et rad- og et kolonnenummer (i området 1-9, eller 0 for å avslutte).  Programmet skal så svare brukeren med hvilke tall (1-9) som er mulige kandidater for plassering i den angitte rad/kolonne-plassen, ved å finne ut hvilke av sifrene 1-9 ikke er allerede brukt i samme rad, kolonne, eller 3×3-omsluttende boks. 

    Input-filen er på 9 linjer, med 9 tall per linje adskilt med mellomrom, og hvor 0 angir plassene som ikke har forhåndsutfylt siffer i Sudoku-oppgaven.  Her er et eksempel på en slik fil (med middels vanskelig oppgave).  Finn gjerne andre oppgaver fra aviser eller nettet. 
    6 0 7 0 0 0 0 8 0
    0 0 0 1 0 4 0 7 0
    0 0 5 0 0 8 0 3 0
    8 0 0 3 0 0 7 0 0
    4 0 0 5 0 6 0 0 8
    0 0 1 0 0 2 0 0 6
    0 8 0 4 0 0 5 0 0
    0 9 0 2 0 3 0 0 0
    0 7 0 0 0 0 1 0 3
    
    (b) Utvid deretter programmet slik at det går gjennom alle ikke-utfylte ruter (i stedet for å be brukeren taste en), og for de rutene som bare har ett kandidatsiffer setter du sifferet inn i arrayen.  Gjenta prosessen med de gjenværende ikke-utfylte ruter helt til to påfølgende gjennomkjøringer ikke finner nye tall å sette inn.  Skriv ut resultatbrettet til slutt.

     
  4. Stjerneoppgave 4: Tre små kinesere
    I den kjente barnesangen tre små kinsere synger man først verset normalt før man bytter ut alle vokalene med a, så e og så i osv. Teksten finner du her: http://www.barnesanger.no/tre-sma-kinesere.html

    Skriv et program som lagrer teksten og alle vokalene og så skriver ut hele sangen. Første gang skriver den ut verset slik som det orginalt er, andre gangen byttes alle vokaler ut med en a ("Tra sma kanasara ..."), tredje gangen med e osv.
    Utskriften skal se noe slikt ut:
    		 Tre små kinesere på Højbro plass
    		 satt og spilte på en kontrabass.
    		 Så kom en konstabel, spurte hva det var,
    		 tre små kinesere på Høybroplass.
    		
    		 Tra sma kanasara på hajbra plass
    		 satt a spalta pa an kantrabass
    		 sa kam an kanstabel, sparta hva da var
    		 tra sma kanasara på hajbra plass
    		
    		 Tre sme kenesere... osv
    
    NB: Utbytting av vokalene kan gjøres veldig enkel ved hjelp av metodene til klassen String (se Java-dokumentasjonen), men prøv å skrive hele denne delen selv før du prøver String sin metode.

     
  5. Stjerneoppgave 5: Søke etter ord
    Skriv et program som søker gjennom en tekst etter et gitt ord, og skriver ut alle setningene som ordet forekommer i. Prøv dette med filen dukkehjem.txt og søk etter ulike ord.

    Denne oppgaven er spesielt relevant for studenter på bachelor-programmet i språk og kommunikasjon, men kan løses av alle.

Tibakemelding om dette oppgavesettet kan du skrive i bloggen eller sende på mail til ragnhilk [a] ifi.uio.no