Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Project euler - python

Skapad av Borttagen, 2011-08-12 17:29 i Webbutveckling & Programmering

3 053
10 inlägg
0 poäng
Raz
Visningsbild
P 31 Hjälte 2 733 inlägg
0
Då jag tänkte öva lite mer på python tänkte jag testa Project Euler, som jag antar att en del av er känner igen. http://projecteuler.net/index.php?section=problems&id=1

Jag sitter fast redan på första problemet:
“If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.”.

Detta tolkar jag helt enkelt som att man ska köra 1 * 3, 2 * 3 etc tills produkten blir större än 1000. Jag gjorde denna kod lite snabbt:
Visa spoiler
x = 0
y = 0
i = 1

while i * 3 < 1000:
x = i * 3
i = i + 1

i = 1

while i * 5 < 1000:
y = i * 5
i = i + 1

print x + y

som ger mig 1994 som svar.

1994 är fel när jag ska skicka in det och jag kollade på lösningar som andra gjort, men de använder modulo och lägger inte ihop 1 * 3, 2 * 3 etc trots att det står i problemet att det är så man ska göra “Find the sum of all the multiples of 3 or 5 below 1000”.

Skulle någon vara så rar att förklara vad jag gör fel för jag håller på att bli galen. Skulle fråga på deras forum om vad problemet är men jag tvivlar inte på att de skulle tycka att jag ger för mycket information och tar bort tråden eller liknande.

Adieu

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0
ska du verkligen sålå ihop x och y?

Du ska väl lista summan av alla multiplikationer av 3 som är under 1000, eller summan av alla multiplikationer av 5?

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

D2H
Visningsbild
P Hjälte 3 460 inlägg
0
Svar till Raz [Gå till post]:
Multiplarna är de som är modulo 0 med antingen 3 eller 5. 3 % 3 = 0, medan 4 % 3 = 1, vilket då inte ska med.
Multiplarna av 3 och 5 under 10 är 3, 5, 6, 9, eftersom de antingen lämnar rest 0 med 3 eller 5. 3+5+6+9 = 23. Det är summan, inte produkten.

Använd range(), eller xrange() om du använder python 2.7 eller under eftersom det är mer pythoniskt än att använda de "while" loopar du använder, det är mer c utan sina fina "for" loopar.
Summan av multiplarna under 20 är 3+5+6+9+12+15+18 = 68, inte 83 som man skulle tänka sig om man använder både
Ett stycke php-kod:

summa = 0
for i in range(0,1000, 3):
summa += i
for i in range(0,1000, 5):
summa += i

Eftersom den räknar de tal som är modulo 15 = 0, två gånger. Dessa måste du sedan räkna bort för att det ska bli rätt svar.

Använd kodtaggar.



Tillägg av D2H 2011-08-12 17:51

Jag ska inte hjälpa dig allt för mycket, eftersom jag redan gjort det.
Men du kan även kombinera dessa två för att komma fram till svaret utan att ta minus de som är modulo 15. Använd en "or" i "for" loopen.

Ingen status

Raz
Visningsbild
P 31 Hjälte 2 733 inlägg
Trådskapare
0
Jaså där ser man, har bara läst Matte A än så länge (valde bort B av någon korkad anledning jag inte kommer ihåg) och där fick jag inte lära mig om modulo eller att det fanns något som kallades multipel.

Jag missförstod helt enkelt i och med att det även stod på engelska och jag inte kan de engelska namnen på de flesta saker och ting i matematikens värld.

Nu ska det nog gå bättre då jag förstår hur de menade med problemet, tack till er bägge två :)

Adieu

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till Raz [Gå till post]:
Modulo kommer inte förrän efter typ matte c : )

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

giatod
Visningsbild
P 34 Ljungsbro Hjälte 267 inlägg
0
jag kan inte python men är det inte så pass lätt så du loopar alla multiplar 5 under 1000 läger dom ett set loopar igenom alla multiplar av 3 läger dom i samma set summerar ihop setet.

Ingen status

D2H
Visningsbild
P Hjälte 3 460 inlägg
0

Svar till giatod [Gå till post]:
Fast då får du med multiplarna av 15 två gånger, och således blir det fel.


Svar till Syndafloden [Gå till post]:
I matte D eller E måste det vara. Finns inte ett knyst om det i C i alla fall, inte för att man behöver använda det innan heller.

Ingen status

giatod
Visningsbild
P 34 Ljungsbro Hjälte 267 inlägg
0

Svar till D2H [Gå till post]:
set är som en lista fast utan dubbleter så det är inget problem

Ingen status

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till D2H [Gå till post]:
C har jag läst, och vi hade inget om modulo. Lite tråkigt, för det är användbart som tusan.

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

D2H
Visningsbild
P Hjälte 3 460 inlägg
0

Svar till giatod [Gå till post]:
Ah right, såg inte den delen. Och så kan man självklart också göra om man vill.


Svar till Syndafloden [Gå till post]:
Det har jag märkt. Jag ska fortsätta läsa C så snart skolan börjar, men vad jag vet så finns det inget om modulo under D, min lärare kunde knappt förklara det. Men tack vare programmeringen vet jag vad det är.

Ingen status


Forum » Datorer & IT » Webbutveckling & Programmering » Project euler - python

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons