Problemstilling

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk for videregående skole og oppover på høyskolenivå. Alle som føler trangen er velkommen til å svare.

Moderatorer: Aleks855, Gustav, Nebuchadnezzar, Janhaa, DennisChristensen, Emilga

Svar
Arctagon
Ramanujan
Ramanujan
Innlegg: 265
Registrert: 06/09-2010 23:12

Jeg er ikke sikker på hvilket felt dette omhandler, så jeg beklager den lite informerende tittelen. Uansett, dette er ingen matematikkoppgave fra en bok, men derimot et praktisk problem jeg gjerne vil løse for å kunne kalkurere dens verdi.

Det starter med 20 sekunder som teller nedover. Hvert fjerde sekund vil det legges til to sekunder. Hvor lang tid tar det før denne 'telleren' når null? Jeg er litt usikker på hvilken fremgangsmetode som vil være optimal å bruke.

All hjelp er satt stor pris på.
Markonan
Euclid
Euclid
Innlegg: 2136
Registrert: 24/11-2006 19:26
Sted: Oslo

Er det nødvendig for deg å finne en analytisk løsning for det?

Her er et program i python som løser problemet for deg. (Bare bytt ut variabelen tid=20 med den verdien du vil teste).

For tid=20 får jeg 38 som svar.

Kode: Velg alt

tid = 20
legg = 0
teller = 0

while (tid > 0):
   teller = teller+1;
   legg = legg + 1;
   tid = tid-1;
   if(legg == 4):
      tid = tid+2;
      legg = 0;

print(teller);
(Utskrift av sekunder i nedtellingen der det legges til 2 sekunder. Funksjon ikke inkludert i programmet over.) :P

Kode: Velg alt

16
14
12
10
8
6
4
2
0
Edit:
Og da fikk jeg et spørsmål til deg. Den skal kanskje ikke legge til tid når nedtellingen når null, selv om det er på et av de "fjerde sekundene"? Da blir svaret i så fall 36.
An ant on the move does more than a dozing ox.
Lao Tzu
Markonan
Euclid
Euclid
Innlegg: 2136
Registrert: 24/11-2006 19:26
Sted: Oslo

I tilfelle det riktige svaret skal være 36 og jeg ikke er her, så er dette programkoden for det:

Kode: Velg alt

tid = 20
legg = 0
teller = 0

while (tid > 0):
   teller = teller+1;
   legg = legg + 1;
   tid = tid-1;
   if(legg == 4 and tid > 0):
      tid = tid+2;
      legg = 0;

print(teller);
An ant on the move does more than a dozing ox.
Lao Tzu
Arctagon
Ramanujan
Ramanujan
Innlegg: 265
Registrert: 06/09-2010 23:12

Markonan skrev:Er det nødvendig for deg å finne en analytisk løsning for det?
Det er så klart lett å komme fram til et riktig svar, men det er bare tungvint og tar tid. Derfor lurte jeg på om det var en lett måte å regne det ut på matematisk, men jeg ville skjønt det om det ikke var mulig, ettersom mengden gjenstående sekunder som det legges to sekunder til forandrer seg hele tiden.
Her er et program i python som løser problemet for deg. (Bare bytt ut variabelen tid=20 med den verdien du vil teste).

For tid=20 får jeg 38 som svar.

Kode: Velg alt

tid = 20
legg = 0
teller = 0

while (tid > 0):
   teller = teller+1;
   legg = legg + 1;
   tid = tid-1;
   if(legg == 4):
      tid = tid+2;
      legg = 0;

print(teller);
Jeg er ikke familiær med Python, men ettersom programmeringsspråk har så mange likhetstrekk seg imellom, skjønner jeg hva som skjer.
Edit:
Og da fikk jeg et spørsmål til deg. Den skal kanskje ikke legge til tid når nedtellingen når null, selv om det er på et av de "fjerde sekundene"? Da blir svaret i så fall 36.
Når telleren er 0 så skal det ikke legges til 2, nei, så 36 er riktig. Det var det jeg også kom fram til gjennom den tungvinte metoden.

Hvilket program bruker du for å utføre kodesekvensen? Jeg kan eventuelt transkribere koden til Flash og utføre det der.
Markonan
Euclid
Euclid
Innlegg: 2136
Registrert: 24/11-2006 19:26
Sted: Oslo

Jeg kjører linux så jeg kan kompilere og kjøre filen med en kommando.

For actionscript blir det noe sånt:

Kode: Velg alt

var tid = 20;
var legg = 0;
var teller = 0;

while (tid > 0) {
   teller = teller+1;
   legg = legg+1;
   tid = tid-1;
   if(legg == 4 && tid > 0) {
      tid = tid+2;
      legg = 0;
   }
}
trace(teller);
Tror det skal funke direkte.
An ant on the move does more than a dozing ox.
Lao Tzu
Arctagon
Ramanujan
Ramanujan
Innlegg: 265
Registrert: 06/09-2010 23:12

Da slapp jeg å transkibere det selv også. Og det fungerte som en drøm. Tusen takk!

Hvordan fikk du til å skrive ut sekunder i nedtellingen der det legges til to sekunder? Jeg kan fjerne 'trace (teller)' og legge inn 'trace (tid)' i if-en, men da regner den med 18 også av en eller annen grunn.

Kode: Velg alt

18
16
14
12
10
8
6
4
Markonan
Euclid
Euclid
Innlegg: 2136
Registrert: 24/11-2006 19:26
Sted: Oslo

Du har tenkt riktig.

Bare legg den inn før tid = tid+2; :wink:
An ant on the move does more than a dozing ox.
Lao Tzu
Arctagon
Ramanujan
Ramanujan
Innlegg: 265
Registrert: 06/09-2010 23:12

Så klart, jeg tenkte problemet kanskje var at den la til 2 før den skrev ut tiden, men jeg overså det faktum at den utfører i rekkefølge nedover. Takk for hjelpen!
Integralen
von Neumann
von Neumann
Innlegg: 525
Registrert: 03/10-2010 00:32

Det tar ikke 36 sekunder, det tar 71 sekunder!

20
19
18
17

+2

19
18
17
16

+2

18
17
16
15

+2

17
16
15
14

+2

16
15
14
13

+2

15
14
13
12

+2

14
13
12
11

+2

13
12
11
10

+2

12
11
10
09

+2

11
10
09
08

+2

10
09
08
07

+2

09
08
07
06

+2

08
07
06
05

+2

07
06
05
04

+2

06
05
04
03

+2

05
04
03
02

+2

04
03
02
01

+2

03
02
01
00

Der 20 er den 1.sekund og 01 den 71.sekund.Total 71 sekunder.
Svar