Hey fellow nerds!♥
Jeg er pt. dybt begravet i Project Euler og tænkte, at PN kunne gøre det mere interessant. Dels i en konkurrence på tid (hurtigste programmering), men også for, at jeg kunne søge hjælp andre steder end google :-).
"Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems."
Jeg har løst de første 10 vha. VBA og Python. VBA var nok til at starte med, men måtte lære Python for at løse problem 8 - har brugt Python siden.
Er der nogen her der leger med PE, eller er det en dødssejler at søge hjælp på PN?
https://projecteuler.net
EDIT: Min friendkey: 29056029507221_3d1375b2e04ce2b8089401f7b665c1e4
Project Euler, att. math./programming nerds of PN
Det viker fedt nok. Er gået igang efter at have læst din post her.
Er nået til 8'eren nu.
Jeg har primært brugt php til løsningerne.
Min fiendkey er 24524504553925_7118b4b602a37cff80fcb63c93a5d15a
Hvor langt er du nu?
Jeg havde slet ikke set, at der er en friends funktion. Fedt! Jeg er ved 11. Jeg har ikke haft tid til at gå videre siden OP. Jeg synes de fleste op til problem 10 er til at overkomme, men så bliver den også, i min bog, klam. Jeg har i hvert fald ikke kunne løse problem 10 vha. 100% egen kode. Eller rettere; jeg har ikke haft tid til at vente på, at min egen kode fandt løsningen...
Jeg føler mig gammel og dum, når jeg læser sådanne tråde...
Var super god til at programmere på Commodore 64, kan det bruges til noget? ;)
ShadeStar skrev:
Jeg føler mig gammel og dum, når jeg læser sådanne tråde...
Var super god til at programmere på Commodore 64, kan det bruges til noget? ;)
Alder er ingen hindring! Jeg kom ind i VBA og og LaTeX vha. bøger, og Python vha. Codeacademy. Hvis du har programmeret før, så er det bare igang med lidt selvstudie, også er du igang igen, før du ved af det!
Har lavet 25 i starten af skoleåret, men synes mange af dem er svære, hvor man godt kunne bruge lidt hints. Den jeg er mest stolt over er nr. 17, men som Aubrey siger, så kan man løse de første ret nemt, hvis man lærer basics af et moderne programmerings sprog.
40197150523752_65cfda5a9ee85409b09855ff5a8a3544
Hvilket programmeringssprog er NUTS, hvis man vil slippe for hindringer, som fx. Python 2.7.3's problemer med rigtig store integers i ranges? Eller er det bare en mindre bagside, og Python ellers er det bedste valg?
Jeg har brugt C#. Ved ikke hvilke sprog der ellers kan håndtere det.
Edit: Og der er faktisk en del af opgaverne der kræver det. Opgave 25 fx, skal du finde det første fibonacci tal på over 1000 cifre.
Har ikke lige fået læst op på det. Kan man bruge java?
Hvis ikke, er C# vel til at overkomme :)
Jeg har løst 50+ opgaver i både SML og ruby, i SML har jeg lavet eget modul til at håndtere uendeligt store heltal uden at man mister præcision. I ruby er det indbygget direkte i sproget. Jeg foretrækker ruby. De mest elegante løsninger jeg har lavet er løsninger hvor der er brugt ren matematik til at komme frem til en løsning, således at man altid vil kunne finde en løsning i O(1)
Jeg har løst de første 10 opgaver i Eclipse med Java.
Som poker spiller burde det være oplagt at starte ud medat løse opgave 54. :-)
Jeg vil give den et skud i C#.
Sagtens, Asger.
ShadeStar skrev:
Jeg føler mig gammel og dum, når jeg læser sådanne tråde...
Var super god til at programmere på Commodore 64, kan det bruges til noget? ;)
poke53280,0
Ok, jeg er igang ;-). 1 og 2 var nogenlunde snappy, men 3'eren ser trixy ud, så den gemmer jeg lige til weekenden.
Har nu løst de første 10 i c#, målet for weekenden må være de næste 10 ;)
nummer 18 ser specielt sjov ud :)
Asger_b skrev:
Ok, jeg er igang ;-). 1 og 2 var nogenlunde snappy, men 3'eren ser trixy ud, så den gemmer jeg lige til weekenden.
I 3'eren, og 10'eren for den sags skyld, er det vigtigere at kende matematikken bag prime factors end at være en god programmør, hvis man vil lave en hurtig kode.
Jeg er gået i stå ved 11'eren. Jeg føler ikke rigtig, at jeg har de nødvendige værktøjer i min programmeringsarsenal til at løse den. Jeg må have gang i Python-studiet igen.
@Aubrey
11'eren ser også ulækker ud. Vil tro den kan brute forces i nogle arrays, men det er jo ikke så optimalt.
Måske en modificeret version af Kadanes' kan optimere?
AubreyGraham skrev:
I 3'eren, og 10'eren for den sags skyld, er det vigtigere at kende matematikken bag prime factors end at være en god programmør, hvis man vil lave en hurtig kode.
Ikke nødvendigvis. .NET's Parallel.For kan gøre underværker på ens algoritmer, selvom man ikke er teoretisk dygtig :D
Nu er jeg ingeniør og ikke matematiker, så jeg hælder mest til brute force løsninger ;)
Min løsning på opgave 11:
for(ulong i=0;i<20;i++)
for (ulong k = 0; k < 17; k++)
{
ulong temp = arrayOfNumber[i, k];
for (ulong j = 1; j < 4; j++)
{
temp *= arrayOfNumber[i,j+k];
}
if (temp > sum)
sum = temp;
}
for (ulong i = 0; i < 20; i++)
for (ulong k = 0; k < 17; k++)
{
ulong temp = arrayOfNumber[k, i];
for (ulong j = 1; j < 4; j++)
{
temp *= arrayOfNumber[k+j, i];
}
if (temp > sum)
sum = temp;
}
for (ulong i = 0; i < 17; i++)
{
for (ulong k = 0; k < 17; k++)
{
ulong temp = arrayOfNumber[i, k];
for (ulong j = 1; j < 4; j++)
{
temp *= arrayOfNumber[i + j, k + j];
}
if (temp > sum)
sum = temp;
}
}
for (ulong i = 0; i < 17; i++)
{
for (ulong k = 0; k < 17; k++)
{
ulong temp = arrayOfNumber[i, 19-k];
for (ulong j = 1; j < 4; j++)
{
temp *= arrayOfNumber[(i + j), 19-(k + j)];
}
if (temp > sum)
sum = temp;
}
}
God spass ind til videre. Jeg har løst 20 nu.
VBA sutter, og så er dens tilfældigheds generator måske verdens ringeste!
Hvis jeg skulle igang med at løse de her problemer ville jeg helt sikkert bruge R - dog uden at vide med sikkerhed, hvordan præcissionen er ved meget store tal.
Yeah, VBA er bestemt forældet. Det er dog desværre en nødvendig i visse sammenhænge, da meget skrivebordsarbejde stadig foregår i Excel.
AubreyGraham skrev:
Yeah, VBA er bestemt forældet. Det er dog desværre en nødvendig i visse sammenhænge, da meget skrivebordsarbejde stadig foregår i Excel.
Tell me about it ... har selv måtte programmere mit største projekt her i aktuariatet i VBA, da alle inputs var fra Excel :-/
I feel your pain bro'
lol@AG
Jeg fandt i øvrigt en vej udenom Matlab's 2^32 begrænsning til 3'eren. 4'eren kan jeg til gengæld ikke umiddelbart løse matematisk :-S
@ rickrick
Hvad er det du skal bruge af input fra Excel?
I feks python kan man sagtens læse worksheets ind...
@Fuglsang
Hvis bare det var et spørgsmål om input/output kunne man selvfølgelig have brugt andre sprog.
Men det er Regnskab, der drifter modellen med input fra Investering, Risiko og Aktuariatet. De har brug for noget overskueligt både mht. input og ikke mindst output - og gerne noget de kan arbejde videre i.
Som med så meget andet startede det med en lille hyggelig model, men efter 3 års revision og diverse ændringer i bekendtgørelser fra Finanstilsynet har modellen udviklet sig til et monster, som man retrospektivt burde have udviklet i et mere robust sprog.
Det gode ved VBA er, at det spiller så godt med Excel og jeg derfor kan være behjælpelig med ekstra kontroller og automatiseringer for Regnskab.
hermod skrev:
@Asger
4'eren er dog ret simpel at løse ved programmering.
Ja, det er sådan set problemet..
Så fik jeg taget mig sammen til, at løse problem 11. Tvivler på at det er den hurtigste kode set, men den virker!
nums = (
( 8, 2,22,97,38,15, 0,40, 0,75, 4, 5, 7,78,52,12,50,77,91, 8,),
(49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48, 4,56,62, 0,),
(81,49,31,73,55,79,14,29,93,71,40,67,53,88,30, 3,49,13,36,65,),
(52,70,95,23, 4,60,11,42,69,24,68,56, 1,32,56,71,37, 2,36,91,),
(22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80,),
(24,47,32,60,99, 3,45, 2,44,75,33,53,78,36,84,20,35,17,12,50,),
(32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70,),
(67,26,20,68, 2,62,12,20,95,63,94,39,63, 8,40,91,66,49,94,21,),
(24,55,58, 5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72,),
(21,36,23, 9,75, 0,76,44,20,45,35,14, 0,61,33,97,34,31,33,95,),
(78,17,53,28,22,75,31,67,15,94, 3,80, 4,62,16,14, 9,53,56,92,),
(16,39, 5,42,96,35,31,47,55,58,88,24, 0,17,54,24,36,29,85,57,),
(86,56, 0,48,35,71,89, 7, 5,44,44,37,44,60,21,58,51,54,17,58,),
(19,80,81,68, 5,94,47,69,28,73,92,13,86,52,17,77, 4,89,55,40,),
( 4,52, 8,83,97,35,99,16, 7,97,57,32,16,26,26,79,33,27,98,66,),
(88,36,68,87,57,62,20,72, 3,46,33,67,46,55,12,32,63,93,53,69,),
( 4,42,16,73,38,25,39,11,24,94,72,18, 8,46,29,32,40,62,76,36,),
(20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74, 4,36,16,),
(20,73,35,29,78,31,90, 1,74,31,49,71,48,86,81,16,23,57, 5,54,),
( 1,70,54,71,83,51,54,69,16,92,33,48,61,43,52, 1,89,19,67,48,),
)
#Horizontal
x = 0
for i in range(len(nums)):
for j in range(len(nums[1])-3):
y = nums[j]*nums[j+1]*nums[j+2]*nums[j+3]
if y > x:
x = y
#Vertical
x = 0
for i in range(len(nums)-3):
for j in range(len(nums)):
y = nums[j]*nums[i+1][j]*nums[i+2][j]*nums[i+3][j]
if y > x:
x = y
#Diagonal left->right
x = 0
for i in range(len(nums)-3):
for j in range(len(nums)-3):
y = nums[j]*nums[i+1][j+1]*nums[i+2][j+2]*nums[i+3][j+3]
if y > x:
x = y
#Diagonal right->left
for i in range(len(nums)-3):
for j in range(len(nums)-1,-1,-1):
y = nums[j]*nums[i+1][j-1]*nums[i+2][j-2]*nums[i+3][j-3]
if y > x:
x = y
print x
Ha ha, der er da en fejl i #267...
Den kan selvfølgeligt godt løses som beskrevet, men det kan umuligt være meningen med opgaven - jeg synes den er mere interessant hvis den havde været "korrekt".
:-)
Fedt at du er videre AubreyGraham, jeg var lige nervøs for at min eneste PE friend var gået i stå ;)
ACO_Himself skrev:
Fedt at du er videre AubreyGraham, jeg var lige nervøs for at min eneste PE friend var gået i stå ;)
Er ved 14'eren nu. Fortsætter i aften ;-)
Andre der i gang?
Pellez skrev:
Må simpelthen sætte mig ind i det der, hvor skal man starte??
www.khanacademy.org/cs
www.khanacademy.org/math/linear-algebra
Man starter bare ved problem 1 og giver den gas :)