Page 1 of 1
Sets (Python)
Posted: 05/02-2015 00:39
by pi-ra

- sets, python.PNG (21.05 KiB) Viewed 2642 times
Har fått i oppgave å løse dette settet ved bruk av Python. Er ny både når det gjelder Python og sånne type oppgaver. Har sittet med oppgaven ganske lenge, men skjønner ikke hvordan jeg skal løse den. Det som gjør det mest problematisk er at man i hver av betingelsene,
i. ii. iii. skal bruke svar fra en eller to av de andre betingelsene..?
Svært takknemlig for alle innspill. Står helt fast

Re: Sets (Python)
Posted: 05/02-2015 21:12
by pi-ra
Dette er kodene jeg har prøvd:
Alternativ 1:
Code: Select all
def a_func(x):
if (b_func(x)%2==0):
return c_func(x)+11
else:
return 2*c_func(x)-129
def b_func(x):
return a_func(x)*c_func(x) % 2377
def c_func(x):
k=0
c0=0
ovre = a_func(x)-1
for i in range(0, ovre+1):
c0 = b_func(x) - 7 * k
k+=1
return c0+142
def all(x):
return a_func(x), b_func(x), c_func(x)
for x in range(1, 449):
print all(x)
Alternativ 2:
Code: Select all
for a in range(1,449):
for b in range(1, 449):
for c in range(1, 449):
#a-funksjonen
if b%2==0:
a=c+11
elif b%2!=0:
a=2*c-129
#b-funksjonen
b = (a*c)%2377
#c-funksjonen
k = 0
c0=0
upper = a-1
for i in range(0, upper+1):
c0 = b-7*i
k+=1
c = c0 + 142
print a, b, c
Re: Sets (Python)
Posted: 07/02-2015 01:15
by Gustav
Code: Select all
def s(x,y):
return x*y-7*sum(xrange(0,x)) + 142
for b in xrange(1,450):
for c in xrange(1,450):
if b%2 == 0 :
a = c+11
if b == a*c %2377 and c == s(a,b) :
print a,b,c
else :
a = 2*c-129
if b == a*c %2377 and c == s(a,b) :
print a,b,c
Re: Sets (Python)
Posted: 07/02-2015 01:23
by pi-ra
Fikk det til til slutt, men takk!
Re: Sets (Python)
Posted: 07/02-2015 10:53
by pi-ra
Oppdaget nå at koden din var mye kjappere da den bokstavelig talt var ti ganger kjappere - takk!
Re: Sets (Python)
Posted: 07/02-2015 11:59
by Gustav
pi-ra wrote:Oppdaget nå at koden din var mye kjappere da den bokstavelig talt var ti ganger kjappere - takk!
Det går an å gjøre koden kjappere hvis det er poenget. F.eks. kan vi erstatte summen i funksjonen s med summeformelen, så vi får koden
Code: Select all
def s(x,y): return (y-3.5*(x-1))*x + 142
for b in xrange(0,450):
for c in xrange(0,450):
if b%2 == 0 :
a = c+11
if b == a*c %2377 and c == s(a,b) :
print a,b,c
else :
a = 2*c-129
if b == a*c %2377 and c == s(a,b) :
print a,b,c
EDIT: visste seg at det ikke var noe vits med den siste koden da begge kjører på ca. 5 ms på min nye laptop.