Sets (Python)

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk på høyskolenivå. Alle som har kunnskapen er velkommen med et svar. Men, ikke forvent at admin i matematikk.net er spesielt aktive her.

Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

Post Reply
pi-ra
Dirichlet
Dirichlet
Posts: 173
Joined: 15/11-2014 02:18

sets, python.PNG
sets, python.PNG (21.05 KiB) Viewed 2541 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 :?
pi-ra
Dirichlet
Dirichlet
Posts: 173
Joined: 15/11-2014 02:18

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
Gustav
Tyrann
Tyrann
Posts: 4563
Joined: 12/12-2008 12:44

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
pi-ra
Dirichlet
Dirichlet
Posts: 173
Joined: 15/11-2014 02:18

Fikk det til til slutt, men takk!
pi-ra
Dirichlet
Dirichlet
Posts: 173
Joined: 15/11-2014 02:18

Oppdaget nå at koden din var mye kjappere da den bokstavelig talt var ti ganger kjappere - takk!
Gustav
Tyrann
Tyrann
Posts: 4563
Joined: 12/12-2008 12:44

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.
Post Reply