You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Læringsmål:

  • For-løkker
  • PLACEHOLDER

Pensum:

  • PLACEHOLDER


DEL 1

a)

Et palindrom er et ord som staves likt begge veier (f.eks. 'abba' eller det finske ordet 'saippuakivikauppias'). Lag en funksjon som returnerer true om en streng er et palindrom; false ellers.

b)

Utvid funksjonalitetn slik at funksjonen kan ta in en setning og sjekke om den er et palindrom. Bruk "  isstrprop(str,'alphanum'))  ".
Test med palindromet: Alle reisetrette skal ete laks etter te, sier Ella.

c)

Det ønskes å hente ut den lengste biten av et stykke DNA avgrenset av en bestemt start og stopp sekvens. Disse oppgis å være "ATG" (start) og "TAG" (stop). DNAet gis som en lang streng av bokstaver: A, T, G og C. Funksjonen skal starte tellingen på nytt hver gang startstrengen gjentas, og tellingen skal avsluttes hver gang stopstrengen gjentas.
Lag en funksjon, sequenceFinder som tar inn tre strenger: sequence, start og stop. Den skal returnere den lengste strengen mellom start og stopp sekvensene.

Test programmet ditt med følgende streng: TATGCGCATGCATCAGTACCGATTACATAGCTACG, svaret skal da være CATCAGTACCGATTACA.


DEL 2

I denne oppgaven skal du lage en funksjon prime(a) som tar inn tallet a og returnerer True om det er et primtall, eller False om det ikke er.

a) 

Skriv en funksjon som returnerer True om parameteren a er delelig med b. Hint: En modulo-operasjon (mod(a,b)) blir brukt i informatikk og i matematikk til å finne resten av et opprinnelig heltall etter en divisjon med et annet tall. Eks.: mod(5,2) = 1

b)

Lag funksjon med en for løkke som itererer fra b = 2,3,...,a-1 og bruker funksjonen fra forrige oppgave for å sjekke om a det er delelig med b. Om de er delelige avslutter du og returnerer 0. Ellers skal du returnere 1.

c)

 Algoritmen skal nå gjøres raskere ved hjelp av 2 små inngrep:

    • Du skal nå bare iterere deg gjennom oddetall. Men du må fortsatt sjekke om a er delelig med 2. Hint:  i = (2*k+1), da er i oddetall for all k.
    • Isteden for å gå helt til i = a-1, skal du nå avslutte når i > round(sqrt(a)+0.5) 

d)

Det skal lages en ny primtallsfunksjon. Funksjonen begynner med en listen [2].  Den skal deretter iterere seg over oddetall fra 3 til N. Dersom tallet ikke er delelig med noen av tallene i listen skal det legges til listen. 

e) 

Primtallene skal lagres til en fil og det skal være mulig å la den nye primtallsfunksjonen fortsette på listen uten å regne ut listen fra starten av. Det kan være lurt å lage tre nye funksjoner for dette: mainPrime, loadPrimes, savePrimes.
mainPrime regner ut feks 100 primtall som lagres og spør brukeren om ytterligere 100 primtall skal finnes.




  • No labels