spillgutten Skrevet 30. august 2012 Del Skrevet 30. august 2012 (endret) PIA - Programmering for ingeniørmessige anvendelser Task 1. Write a recursive function pascal(n) that returns the nth row in Pascal's triangle as a list. Task 2. Write a non-recursive function factorial(n) that returns n! = n(n > 1)... 1, for integer n > 0 (use the definition 0! = 1). Task 3. Compare the running times of mergesort and list.sort() for integers. (a) Write a function randintlist(a, b, n) that takes three integers as input, a > b, n > 1, and returns a list of n "random" integers xi such that a < xi < b for i = 1,..., n. (b) Write a function compare(p, q, a, b) that measures the running times of mergesort and list.sort(). The function compare should measure the respective average times the two sorting functions take to sort some "random" lists of integers. The input should be the following: p - the number of random lists to sort, p > 1, q - the length of the random lists to sort, q > 1, a, b - every random list should have elements xi such that a < xi < b, where a and b are integers. The output should be a list containing the two obtained average times. ( c) Write a Python program that uses the function compare(p, q, a, b) to compare mergesort and list.sort() for some different inputs. Is some time difference between the two sorting functions noticed? If so, what could be a possible reason? (d) Modify compare(p, q, a, b) so that it compares the running times for already sorted lists. Name the new function comparesorted(p, q, a, b). Is some time different between the two sorting functions noticed? Is the result the same as in ©? Give a possible reason for the result. Noen som er flink? Trenger hjelp! Mvh ikke-så-Python-nerd Endret 30. august 2012 av spillgutten Lenke til kommentar
Lycantrophe Skrevet 30. august 2012 Del Skrevet 30. august 2012 Vil du ha de implementert for deg eller vet du ikke hvor du skal begynne? Vet du for eksempel hva forskjellen på en rekursiv og en iterativ funksjon er? Lenke til kommentar
spillgutten Skrevet 30. august 2012 Forfatter Del Skrevet 30. august 2012 Vil du ha de implementert for deg eller vet du ikke hvor du skal begynne? Vet du for eksempel hva forskjellen på en rekursiv og en iterativ funksjon er? Begrepene til funksjonene har jeg peiling på, men å få det inn i python er jeg veldig blank på. En start hadde vært behjelpelig Lenke til kommentar
Lycantrophe Skrevet 30. august 2012 Del Skrevet 30. august 2012 (endret) Kan jo gi et eksempel på en (kjapt slengt sammen) pascal: 1 def pascal( n ): 2 if n == 0: 3 return [ 1 ] 4 P, L = pascal( n - 1 ), [ 1 ] 5 [ L.append( P[ i ] + P[ i + 1 ] ) for i in xrange( len( P ) / 2 ) ] 6 if n % 2 == 0: 7 return L[:-1] + L[::-1] 8 return L + L[::-1] Til forklaringene: def pascal( n ): Dette er definisjonen av funksjonen. def navn( args ): I python er det ikke tradisjonelle blokker med f.ex. {} eller begin/end, men heller implisitt gjennom innrykk. P, L = pascal( n - 1), [ 1 ] Dette er er deklarering av henholdsvis P og L (variabler) der P får verdien (listen) til det rekursive kallet og L blir listen [ 1 ], altså en liste med et element bestående av tallet 1 [ L.append( P[ i ] + P[ i + 1 ] ) for i in xrange( len( P ) / 2 ) ] Dette er en noe som kalles list comprehension. Det er en (elegant) måte å iterere over og binde verdier til en liste på. En alternativ syntax er: for i in xrange( len( P ) / 2 ): L.append( P[ i ] + P[ i + 1] ) Det ville gjort akkurat det samme. xrange er en såkalt generator som er nokså teknisk, men du kan anse det hele som en foreach-løkke. len( P ) er en funksjon som finner lengden av listen den får som argument. 6 if n % 2 == 0: 7 return L[:-1] + L[::-1] 8 return L + L[::-1] Modulo-operatoren regner jeg med du har sett før. L[:-1] er python for "returner listen fra første element til og med nest siste". L[::-1] er "returner den reverste listen". Om du vil vite hvorfor kan du bare spørre. + konkatenerer listene. Edit: Såvidt jeg kan se inneholder denne posten alle tingene det kan være greit å ha for å løse de resterende oppgavene. Prøvd deg gjerne også fram med interpreteren direkte for å se hvordan ting fungerer. Endret 31. august 2012 av Lycantrophe 2 Lenke til kommentar
mrmrme Skrevet 31. august 2012 Del Skrevet 31. august 2012 Tror nok jeg går samme kurset som deg OP.. dette er første oppgaven vi har fått med en lab og 3 forelesninger, vanskelighetsgraden er høy for første innlevering syns jeg og mange andre. Men et tips er at du youtuber "python cource MIT" så går de igjennom basic ganske bra. Lenke til kommentar
mrmrme Skrevet 31. august 2012 Del Skrevet 31. august 2012 (endret) Har løst oppgave 1 og 2. Sitter på oppgave 3 nå selv (a) Write a function randintlist(a, b, n) that takes three integers as input, a > b, n > 1, and returns a list of n "random" integers xi such that a < xi < b for i = 1,..., n. def f (a, b, n) : if a&--#60;b or a==b: return ?? if n &--#62; 1 or n ==1: return ?? Er jeg helt på jordet? Endret 31. august 2012 av mrmrme Lenke til kommentar
Lycantrophe Skrevet 31. august 2012 Del Skrevet 31. august 2012 (endret) Ja, littegrann, men det er ikke python-spesifikt. Det du ønsker er å generere en liste tilfeldige tall. Du skal ikke sjekke min/max-verdier, men anta at funksjonen får inn rett. Trikset er å, for hvert tilfeldige tall, sjekke om det er innenfor rekkevidden (domain på engelsk) Tips: sjekk ut python-modulen random. Edit: Dokumentasjon på den finnes her: http://docs.python.org/library/random.html Endret 31. august 2012 av Lycantrophe Lenke til kommentar
sheherezade Skrevet 1. september 2012 Del Skrevet 1. september 2012 Flere som har en innlevering til uka skjønner jeg. Jeg tror vi går på samme kurs. 1 Lenke til kommentar
spillgutten Skrevet 1. september 2012 Forfatter Del Skrevet 1. september 2012 Haha, om det er første året med PIA i ingeniørfag så er det samme.. Sliter med å forstå oppgavene mest egentlig. Lenke til kommentar
Lycantrophe Skrevet 1. september 2012 Del Skrevet 1. september 2012 Noe spesifikt? De ser nokså straight-forward ut for min del. Lenke til kommentar
zotbar1234 Skrevet 2. september 2012 Del Skrevet 2. september 2012 (endret) PIA - Programmering for ingeniørmessige anvendelser (...) Noen som er flink? Trenger hjelp! Kreativt. Får bidragsytere "bestått" da, eller skal dette tilfalle deg alene? Eller blir karakteren delt på antall bidragsytere? Protip -- hva om du viser hva du forventer koden din skal gjøre, hva den gjør og hvordan disse to er forskjellige. Endret 2. september 2012 av zotbar1234 Lenke til kommentar
sheherezade Skrevet 2. september 2012 Del Skrevet 2. september 2012 (endret) Ja oppgaven er sikkert enkel for de som har kjennskap til programmering og bruk av Python. Jeg tror det vi sliter primært med at vi ikke helt skjønner hva Python er(bortsett fra at det er et programmeringsspråk), hvordan det er bygd opp og hvordan vi skal bruke det. Lycanthrope : hva betyr i? (du skriver for "i in range..") Endret 2. september 2012 av sheherezade Lenke til kommentar
Lycantrophe Skrevet 2. september 2012 Del Skrevet 2. september 2012 Det er jo bare å prøve. Jeg har gitt dere nok triks til å kunne få det til. Lenke til kommentar
spillgutten Skrevet 3. september 2012 Forfatter Del Skrevet 3. september 2012 Task1: def value (row, index): if index == 0 or index == row: return 1 if index < 0 or index > row + 1: return 0 return value (row-1, index) + value (row-1, index-1) for i in range(10): print [value (i, x) for x in range(i+1)] Lenke til kommentar
Lycantrophe Skrevet 3. september 2012 Del Skrevet 3. september 2012 (endret) Den skulle bare ta inn n. Den skal også returnere en liste, ikke bare printe den. Endret 3. september 2012 av Lycantrophe Lenke til kommentar
blablabla123 Skrevet 3. september 2012 Del Skrevet 3. september 2012 Tar samme kurs, men skjønner fint lite. Problemet er vel det at vi ikke har noen tekstbok vi kan lese i, fått noen spesiell innføring i python ( eller programmering for den saks skyld), ikke fått noen gjennomgang av oppgavene etc. Har aldri prøvd meg på noen form for programmering så er relativt blank. Skjønner egentlig ikke helt oppgaveteksten. Skjønner ikke helt hvor jeg skal begynne. (Fortvilt!!) Lenke til kommentar
Lycantrophe Skrevet 3. september 2012 Del Skrevet 3. september 2012 Dere får disse oppgavene uten noen gang ha vært borti programmering? Hva slags kurs er dette, egentlig? Lenke til kommentar
blablabla123 Skrevet 3. september 2012 Del Skrevet 3. september 2012 Stemmer det. Faget heter Programmering for ingeniørmessige anvendelser, og er ett nytt fag for alle som går bachelor første år. Lenke til kommentar
mrmrme Skrevet 3. september 2012 Del Skrevet 3. september 2012 tittet litt på neste oppgave, skjønner ikke noe, men poster den bare for fun fact er den vanskelig å lese seg opp på ? nivået mitt er lavt, jeg løste 1 og 2, klarte ikke 3 på task 1 Lenke til kommentar
Lycantrophe Skrevet 3. september 2012 Del Skrevet 3. september 2012 Jeg synes ikke det er spesielt vanskelig, nei. Hvilken skole er dette? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå