De Devschuur Coffee Corner Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 28 ... 201 Laatste
Acties:
  • 852.071 views

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik denk hetzelfde als:
S:
1
sum(1:100)^2-sum((1:100)^2)

Die apply-functie: Is reduce geen betere naam? ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:10
* whoami aait NHibernate. :)

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op maandag 18 januari 2010 @ 17:54:
[...]

De oplossing in m'n Kol Q l8or 2 is trouwens
code:
1
apply(i:1..100,r:0,r+i)**2 - apply(i:1..100,r:0,r+i**2)

:Y)
Moest een beetje aan haskell denken toen ik dit zag. :P

Toen ook maar even aan de slag gegaan.. :9
code:
1
sum([1..100])^2 - sum([i^2 | i <- [1..100]])

Acties:
  • 0 Henk 'm!

  • fiftyhillswest
  • Registratie: Oktober 2009
  • Laatst online: 10:41
Gatverdamme,

Was ik net weer blij toen project Euler weer up was en ik ga druk bezig met het oplossen van proleem 55. Denk ik een antwoord te hebben gevonden, vul het in... Gaat hij weer down :@

edit: lijkt nu weer up te zijn. Ach nou ja, had het toch fout :P

[ Voor 14% gewijzigd door fiftyhillswest op 18-01-2010 20:29 ]


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Ik loop nu toch tegen een javascript-probleem aan waar ik niet snel een oplossing voor zie:

Ik heb JS-code die een flinke bult werk in één keer moet doen (ja, heeft te maken met m'n eerdere berichten). Tussentijds wil ik delen van de informatie displayen, en dat gaat uiteraard niet want 99% van de browsers renderen pas na het executen van een function(). Gewoonlijk is hiervoor de oplossing om de desbetreffende function() op te hakken en er tussendoor de browser te laten renderen. Hier is dit niet mogelijk.

Ik heb gekeken naar Gears WorkerPool om threads van mijn probleem te maken, maar dit werkt ook niet omdat ik alleen maar strings naar een mede-worker kan passen, en ik moet persé een object passen (DOM-object en/of Blob).

Ik ken geen andere manier. Iemand een idee/tip?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Ik ken geen andere manier. Iemand een idee/tip?
Ja, open er een topic over ;)
offtopic:
hint hint!

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Verwijderd schreef op maandag 18 januari 2010 @ 20:17:
[...]


Moest een beetje aan haskell denken toen ik dit zag. :P

Toen ook maar even aan de slag gegaan.. :9
code:
1
sum([1..100])^2 - sum([i^2 | i <- [1..100]])
Minder haakjes plz:
Haskell:
1
sum [1..100] ^ 2 - sum [n*n | n <- [1..100]]

:p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Creepy schreef op maandag 18 januari 2010 @ 20:58:
[...]

Ja, open er een topic over ;)
offtopic:
hint hint!
Jij bent creepy...

offtopic:
ok, ok, eerst even m'n code toonbaar maken

Acties:
  • 0 Henk 'm!

Verwijderd

RayNbow schreef op maandag 18 januari 2010 @ 21:09:
[...]

Minder haakjes plz:
Haskell:
1
sum [1..100] ^ 2 - sum [n*n | n <- [1..100]]

:p
Ziet er inderdaad iets meer haskell style uit. ;) Ik moest de haskell kennis dan ook redelijk onder het stof vandaan halen. :9

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

pedorus schreef op maandag 18 januari 2010 @ 20:10:
Ik denk hetzelfde als:
S:
1
sum(1:100)^2-sum((1:100)^2)

Die apply-functie: Is reduce geen betere naam? ;)
Of fold idd, maar dat komt omdat ie is ontstaan uit een apply-achtige constructie en z'n leven in z'n huidige vorm sowieso onzeker is, dus ik heb gewoon nog niet de moeite genomen om de naam te veranderen :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

Auw :X Klasgenoot commit een rewrite van een algoritme dat we in ons spel gebruiken, Subversion kan hem niet mergen dus hij zou voor 'Use my file' moeten kiezen, kiest ie per ongeluk voor iets anders (blijkbaar). 7 uur werk weg. :X

Althans, zo leek het. * Sebazzz aait .NET reflector

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 21-09 18:08

CoolGamer

What is it? Dragons?

Sebazzz schreef op maandag 18 januari 2010 @ 22:29:
Auw :X Klasgenoot commit een rewrite van een algoritme dat we in ons spel gebruiken, Subversion kan hem niet mergen dus hij zou voor 'Use my file' moeten kiezen, kiest ie per ongeluk voor iets anders (blijkbaar). 7 uur werk weg. :X

Althans, zo leek het. * Sebazzz aait .NET reflector
Je zou natuurlijk ook kunnen branchen. Dan kan je blijven committen zonder dat de trunk wordt aangepast. Als het dan af is kan je de branch weer mergen.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dan nog heb je gewoon de vorige revisie hoor...

{signature}


Acties:
  • 0 Henk 'm!

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 16:38

GrimaceODespair

eens een tettenman, altijd ...

Mag ik mee aaien? Wel nog eerst even een schop geven tegen zijn lazy load ass...

Wij onderbreken deze thread voor reclame:
http://kalders.be


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Voutloos schreef op maandag 18 januari 2010 @ 23:31:
Dan nog heb je gewoon de vorige revisie hoor...
Nee, je gaat pas mergen nadat je hebt gecommit naar je branch. Als je je branch merget met een 'accept theirs' dan is je merge weliswaar niet goed gegaan, maar je branch is er nog, inclusief je laatste changes. Dit itt een commit van een stuk code waarbij je merget met een 'accept theirs', omdat de uiteindelijke file dus de versie wordt zoals ie in het depot staat, en je changes dus weg zijn (lokale (in-memory) backups daargelaten)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
O zo, tja da's gewoon een beetje dom. :+

Maar goed, een beetje IDE heeft daar lokale revisies voor. Lees: Eclipse heeft me er ook eens bij kunnen helpen. O-)

{signature}


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

Nouja, Visual Studio icm met AnkhSVN niet blijkbaar.
Maarja, ben nieuw bij Subversion.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Argggg, ik probeerde vandaag even een nieuwe database via WAMP aan te maken. Alles keurig ingesteld in phpmyadmin, cookie login, wachtwoord generatie etc.

Probeer ik via phpmyadmin in te loggen op de mysql-server (username en wachtwoord) krijg ik de volgende melding:
[red]#1045 - Access denied for user 'root'@'localhost' (using password: NO) [/red]

Alle configuratiebestanden nogmaals doorlopen, services herstart, mocht allemaal niet baten.

Pak ik Firefox erbij, meteen succesvol inloggen :')

Chrome stuurt kennelijk het wachtwoord-veld niet goed door kwam ik achter met de debugger. Beetje vreemd en niet zo lekker :P

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
afraca schreef op maandag 18 januari 2010 @ 17:56:
Ik blijf maar worstelen met probleem 13 van project euler. (hier). Je krijgt honderd 50-digit getallen, prima. Maar als ik 'm in 1 string zet, vervolgens str_split met tweede argument 50, zie ik in m'n var_dump niet netjes een array met 100 getallen, maar 105 volgens mij.... En m'n editor geeft aan bij het selecteren dat ik 5099 characters selecteer.....
Ha, ik dacht 'die doen we even', maar toen bleek dat de string representatie van een groot nummer in PHP ineens 5.nogwatE+nogwat is, :+. Bah, rofl. Dan maar in Java doen?

Acties:
  • 0 Henk 'm!

Verwijderd

@hierboven

Als de getallen echt te groot zijn voor PHP dan heeft Java hetzelfde probleem; je zal een grote getallen bibliotheek nodig gaan hebben ben ik bang.Voor PHP is dat bcmath dacht ik, Java heeft BigInteger (zit in standaard math package).

[ Voor 40% gewijzigd door Verwijderd op 19-01-2010 10:38 ]


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
YopY schreef op dinsdag 19 januari 2010 @ 09:47:
[...]


Ha, ik dacht 'die doen we even', maar toen bleek dat de string representatie van een groot nummer in PHP ineens 5.nogwatE+nogwat is, :+. Bah, rofl. Dan maar in Java doen?
Dat is gewoon de default representatie? Met sprintf et al. kun je zelf een representatie kiezen :)

edit: en met hierboven, PHP integers worden floats boven ~2^31

[ Voor 7% gewijzigd door user109731 op 19-01-2010 10:42 ]


Acties:
  • 0 Henk 'm!

  • cfern
  • Registratie: Oktober 2009
  • Laatst online: 16:59
Verwijderd schreef op dinsdag 19 januari 2010 @ 10:37:
je zal een grote getallen bibliotheek nodig gaan hebben ben ik bang.
Hint:
spoiler:
je hebt niet alle cijfers van de inputgetallen nodig. Je kunt het probleem zonder bigint library oplossen.

[ Voor 3% gewijzigd door cfern op 19-01-2010 10:51 ]

"I'd rather have a full bottle in front of me, than a full frontal lobotomy." (Tom Waits) | PoE


Acties:
  • 0 Henk 'm!

Verwijderd

@hierboven

Ik heb geen flauw idee waar die precies mee bezig is. Maar als hij denkt van PHP -> Java te moeten overstappen omdat ze getallen te groot worden dan gaat die overstap niet echt werken.

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Twee "strings" optellen is natuurlijk vrij simpel, daar heb je geen hele library voor nodig. (in O(n log n) vermenigvuldigen is lastiger :) )
spoiler:
// patch met 0-en indien ongelijke lengte, of pas code aan...
int carry = 0;
for (i=0; i<len; ++i) { // index 0 is lsd
int sum = (int)(a[i]) + (int)(b[i]) + carry;
carry = sum / 10;
result.push_back(sum%10);
}
if (carry) result.push_back(carry);

Je kan ook 50 digits in een keer optellen in een innerloop.

[ Voor 12% gewijzigd door Zoijar op 19-01-2010 11:15 ]


Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 18:13
Bah, gisterenavond ruim 2 uur bezig geweest en geen zak opgeschoten met een tooltje dat ik aan het bouwen ben. Het resultaat van mijn .NET applicatie is een DOT file dat een gerichte graaf representeert, dat ik vervolgens aan GraphViz aanbiedt om er een grafische representatie van te maken. Dit werkt allemaal prima, alleen wil ik GraphViz eigenlijk een formaat laten uitspugen zodat ik in WPF wat kan doen met de nodes in de graaf (denk aan: een node selecteren, z'n kleur wijzigen, label wijzigen, etc.). Standaard formaten als JPG, GIF, PNG, etc. vallen dus af.

Output in SVG leek me een goede optie, maar ik kan nergens een goede gratis tool vinden die SVG omzet in XAML; alleen het betaalde ReaderSVG werkt goed (evaluation version geprobeerd), maar aangezien het een hobbyproject is wil ik er eigenlijk geen geld aan spenderen.

Output in PLAIN en weergeven met het DotViewer control voldeed ook niet aan mijn wensen, omdat het control niet goed overweg kan met kleuren en het uitlezen en wijzigen van data van nodes is zeer beperkt. Dit is wel open source, dus dit zou ik zelf kunnen uitbreiden, alleen wil ik me liever richten op de functionaliteit van het tooltje zelf.

Iemand hier bij de koffieautomaat die een goede tip heeft? :)

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Zelf een SVG-to-XAML-library schrijven? :)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • cfern
  • Registratie: Oktober 2009
  • Laatst online: 16:59
Amras schreef op dinsdag 19 januari 2010 @ 11:29:
Iemand hier bij de koffieautomaat die een goede tip heeft? :)
(mogelijk naief) idee: SVG is XML. Xaml is XML. Gebruik een XSLT om beiden in elkaar over te knutselen.

Misschien dat deze link een aanknopingspuntje biedt? http://www.xs4all.nl/~wrb/Articles/Article_SVGToXAML_01.htm

"I'd rather have a full bottle in front of me, than a full frontal lobotomy." (Tom Waits) | PoE


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Verwijderd schreef op dinsdag 19 januari 2010 @ 10:37:
@hierboven

Als de getallen echt te groot zijn voor PHP dan heeft Java hetzelfde probleem; je zal een grote getallen bibliotheek nodig gaan hebben ben ik bang.Voor PHP is dat bcmath dacht ik, Java heeft BigInteger (zit in standaard math package).
Nouja, de enige reden dat ik naar Java overstap is omdat ik weet hoe BigInteger werkt, voor bcmath moet ik het eerst uitzoeken, :+.

(Jaja, ik weet dat dat het doel van Euler best wel overbodig maakt, maar ik zeg maar altijd, een goeie programmeur is lui.)

En ik had wel zoiets geraden dat je niet alle cijfers bij elkaar op hoeft te tellen om die eerste 10 cijfers van het resultata te vinden, maar ik ben niet wiskundig genoeg aangelegd (lees: ik ken dat truukje niet, en ben te lui om het uit te zoeken) om die manier toe te passen.

Toch maar eens thuis met Euler bezig ipv op het werk, ;).

Acties:
  • 0 Henk 'm!

  • cfern
  • Registratie: Oktober 2009
  • Laatst online: 16:59
YopY schreef op dinsdag 19 januari 2010 @ 11:46:
Toch maar eens thuis met Euler bezig ipv op het werk, ;).
Bekend verschijnsel. :$

'Gelukkig' ben ik nu op het punt aanbeland dat eventjes een probleempje tussendoor oplossen op het werk echt niet meer kan. Ik ben al blij als ik er 1 per week haal nu. Dus in plaats van mijn werktijd te verprutsen met project Euler, verpruts ik nu mijn werktijd met praten over project Euler.

Gelukkig is alle verstookte tijd niet voor niets geweest. Ik heb zo ontzettend veel opgestoken van functioneel programmeren, algoritmes en datastructuren dat dat indirect mijn werk toch ten goede komt. Nu nog de baas overtuigen van dit verhaal.

"I'd rather have a full bottle in front of me, than a full frontal lobotomy." (Tom Waits) | PoE


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

cfern schreef op dinsdag 19 januari 2010 @ 10:48:
[...]

Hint:
spoiler:
je hebt niet alle cijfers van de inputgetallen nodig. Je kunt het probleem zonder bigint library oplossen.
Klopt, alle benodigde digits passen gewoon in een 64 bits float of int. Het is alleen wel jammer dat de input wat dat betreft niet heel nauw luistert. Met te weinig digits krijg je hetzelfde antwoord.

PHP:
1
2
3
4
5
6
$input = /* de array van getallen als strings */;
$result = 0;
foreach($input as $value)
    $result += (float)substr($value, 0, 13);
$result = substr(sprintf("%10.0f", $result), 0, 10);
echo $result;

[ Voor 19% gewijzigd door .oisyn op 19-01-2010 12:26 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:54
Verwijderd schreef op dinsdag 19 januari 2010 @ 10:37:
@hierboven
Als de getallen echt te groot zijn voor PHP dan heeft Java hetzelfde probleem; je zal een grote getallen bibliotheek nodig gaan hebben ben ik bang.
Welnee man, gewoon basisschoolniveau wiskundeskills (en middelbare-schoolniveau PHP skills :P):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php $data = <<<EOF
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
..
20849603980134001723930671666823555245252804609722
53503534226472524250874054075591789781264330331690
EOF;
$data = explode("\n", $data);

$result = '';
for ($col = 49; $col >= 0; --$col)
{
    foreach ($data as $row) $sum += $row[$col];
    $result = ($sum%10).$result;
    $sum = intval($sum/10);
}
echo substr($sum.$result, 0, 10);

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Pfff, die van mij is veel korter :+

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:54
Meestal schep je niet zo op over je korte ;)

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 18:13
Alex) schreef op dinsdag 19 januari 2010 @ 11:33:
Zelf een SVG-to-XAML-library schrijven? :)
cfern schreef op dinsdag 19 januari 2010 @ 11:37:
[...]
(mogelijk naief) idee: SVG is XML. Xaml is XML. Gebruik een XSLT om beiden in elkaar over te knutselen.

Misschien dat deze link een aanknopingspuntje biedt? http://www.xs4all.nl/~wrb/Articles/Article_SVGToXAML_01.htm
Dank voor jullie reactie. Ik ga toch even onderzoeken hoeveel werk het echt is om de gegenereerde SVG files naar een knap stuk XAML te transformeren. Als het meevalt, ga ik toch maar die kant op. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Soultaker schreef op dinsdag 19 januari 2010 @ 12:21:
[...]

Welnee man, gewoon basisschoolniveau wiskundeskills (en middelbare-schoolniveau PHP skills :P):
...
Ik weet dat het niet moeilijk is om add/sub/mul/div te doen voor grotere getallen; maar waarom zou ik zelf een functie schrijven als die er al is?

@hieronder: die dingen heb je lang niet altijd nodig (zeker niet voor 50 decimalen). Mul kan zonder al te veel gedoe ook nog wel in O(n*m), waar n en m grote zijn van getal 1 en 2. Een simpele geimplementeerde div kan ook nog wel redelijk snel. En je hebt gelijk; als je moeilijk gaat doen kan het sneller (maar datis lang niet altijd de moeite waard).

[ Voor 32% gewijzigd door Verwijderd op 19-01-2010 23:36 ]


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Verwijderd schreef op dinsdag 19 januari 2010 @ 19:40:
Ik weet dat het niet moeilijk is om add/sub/mul/div te doen voor grotere getallen;
mul en div zijn best lastig om efficient te doen; heb je toch FFTs en Newton inversions nodig etc.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Soultaker schreef op dinsdag 19 januari 2010 @ 12:21:
[...]

Welnee man, gewoon basisschoolniveau wiskundeskills (en middelbare-schoolniveau PHP skills :P):
Ik kreeg nooit for / foreach loops op de basisschool, laat staan cijfers met 50 nummers, :'(.

Acties:
  • 0 Henk 'm!

Verwijderd

Toch leuk zo'n lazy taal als haskell. :9
code:
1
2
3
4
problem13 = do 
       inpStr <- readFile "problem13.txt"
       print (take 10 (show (sumFile inpStr)))
       where sumFile = sum . map read . words


/me is even helemaal in z'n sas met haskell

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Verwijderd schreef op dinsdag 19 januari 2010 @ 20:40:
Toch leuk zo'n lazy taal als haskell. :9
code:
1
2
3
4
problem13 = do 
       inpStr <- readFile "problem13.txt"
       print (take 10 (show (sumFile inpStr)))
       where sumFile = sum . map read . words


/me is even helemaal in z'n sas met haskell
Precies hetzelfde, maar minder haakjes:
Haskell:
1
2
problem13 =
  print . take 10 . show . sum . map read . words =<< readFile "problem13.txt"

:+

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

Verwijderd

RayNbow schreef op maandag 18 januari 2010 @ 21:09:
[...]

Minder haakjes plz:
Haskell:
1
sum [1..100] ^ 2 - sum [n*n | n <- [1..100]]

:p
code:
1
2
cumsum(binomcdf(99,0
sum(ans)[sup]2[/sup]-sum(ans[sup]2[/sup]


14 bytes :*)

heb nu 6 opgelost met mn GR, maar de rest schiet niet op... (lees: te weinig mem, 10000x pi berekenen? 8)7 )

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Verwijderd schreef op dinsdag 19 januari 2010 @ 20:40:
Toch leuk zo'n lazy taal als haskell. :9
code:
1
2
3
4
problem13 = do 
       inpStr <- readFile "problem13.txt"
       print (take 10 (show (sumFile inpStr)))
       where sumFile = sum . map read . words


/me is even helemaal in z'n sas met haskell
Is dat voor de euler challenge?

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

Verwijderd

@RayNbow: nice. :9
Boudewijn schreef op dinsdag 19 januari 2010 @ 22:35:
[...]

Is dat voor de euler challenge?
Jup. Probleem 13. :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:54
Verwijderd schreef op dinsdag 19 januari 2010 @ 19:40:
Ik weet dat het niet moeilijk is om add/sub/mul/div te doen voor grotere getallen; maar waarom zou ik zelf een functie schrijven als die er al is?
Nou ja, ik doe Project Euler problemen voor m'n eigen plezier, en om mezelf een beetje uit te dagen. Als het enige doel de oplossing vinden is, kun je natuurlijk een kant-en-klare library gebruiken, maar persoonlijk beleef ik er meer lol aan als ik ook zelf een essentieel stukje oplossingsalgoritme bedenk en implementeer. Alleen de I/O doen en de rest door een library laten afhandelen vind ik niets. Maar ieder z'n meug.

Er zijn zelfs sites die alle eindantwoorden publiceren, zodat mensen heel snel een 100% score kunnen behalen zonder de problemen maar te hoeven lezen. Wat daar het praktisch nut van is ontgaat me echt volledig. 8)7
YopY schreef op dinsdag 19 januari 2010 @ 20:18:
Ik kreeg nooit for / foreach loops op de basisschool, laat staan cijfers met 50 nummers, :'(.
Je hebt op de basisschool toch wel geleerd hoe je twee (of meer) getallen optelt met pen en papier? Die zet je onder elkaar, en dan tel je de cijfers in de eerste kolom op. Het laatste cijfer van die som is het laatste cijfer van het antwoord, en de rest neem je mee bij het optellen van de volgende kolom, enzovoorts.

Dat is precies wat mijn voorbeeldcode doet, en als je de basisschoolmethode kent, maakt het weinig uit of je nu twee of 100 getallen optelt, en of die getallen uit drie of 50 cijfers bestaan. Het principe blijft hetzelfde en voor die for-loops heb je die middelbare-schoolniveau* PHP-kennis die ik noemde. ;)

Ik denk dat ik de gevraagde som ook wel met pen en papier had kunnen uitrekenen toen ik twaalf was. Maar het had me uiteraard wat tijd gekost. ;)

* Ja, ik weet dat PHP niet onderwezen wordt op de middelbare school, maar menig middelbare scholier heeft enige kennis van webdesign en -programmering met PHP.

[ Voor 3% gewijzigd door Soultaker op 19-01-2010 23:47 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

Soultaker schreef op dinsdag 19 januari 2010 @ 23:42:
[...]

* Ja, ik weet dat PHP niet onderwezen wordt op de middelbare school, maar menig middelbare scholier heeft enige kennis van webdesign en -programmering met PHP.
* Sebazzz zit dus in de verkeerde informatica klas :+
De meeste bij ons hebben enige kennis van Steam, CoD4 enzovoorts :+

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Verwijderd

Je komt php op middelbaar wel tegen hoor (past prima in het vak Informatica als keuzevak tweede fase). Ervaring is wel dat er maar enkelen per klas for gaan snappen en dergelijke.

Acties:
  • 0 Henk 'm!

Verwijderd

Soultaker schreef op dinsdag 19 januari 2010 @ 23:42:
Je hebt op de basisschool toch wel geleerd hoe je twee (of meer) getallen optelt met pen en papier? Die zet je onder elkaar, en dan tel je de cijfers in de eerste kolom op. Het laatste cijfer van die som is het laatste cijfer van het antwoord, en de rest neem je mee bij het optellen van de volgende kolom, enzovoorts.
oefening: een lib maken die kan delen en vermenigvuldigen, je lib mag enkel + en - gebruiken })


ja, dat is mij gelukt met assemblier, maar niet makkelijk... de Z80 heeft dus geen multiplicatie instructie :r. en N keer B bij B laten optellen is niet zo efficiënt...
tip: je kan vermenigvuldigen met 2

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

Verwijderd schreef op dinsdag 19 januari 2010 @ 23:55:
Je komt php op middelbaar wel tegen hoor (past prima in het vak Informatica als keuzevak tweede fase). Ervaring is wel dat er maar enkelen per klas for gaan snappen en dergelijke.
Nee hoor, hoogstens HTML met frames. En Logo, en GameMaker maar voor de rest heb ik vorig jaar niets echt dynamisch gehad. Maarja, ik koos ook informatica om me tijd te verdoen dat laatste examenjaar. Goed geluk hoor :z

[ Voor 10% gewijzigd door Sebazzz op 20-01-2010 00:08 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zeg dat je het tegenkomt; das iets anders als dat elke school PHP geeft. Kan zo wel een middelbare school noemen waar het onderdeel is van het vak Informatica;heb nog meegeholpen om dat op te zetten. Het zal niet de norm zijn, dat niet.

[ Voor 9% gewijzigd door Verwijderd op 20-01-2010 00:24 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:54
Verwijderd schreef op dinsdag 19 januari 2010 @ 23:59:
oefening: een lib maken die kan delen en vermenigvuldigen, je lib mag enkel + en - gebruiken })
Klinkt bekend. ;)
Maar is inderdaad leuk om over dat soort dingen na te denken.

edit:
Wellicht moet ik dat iets toelichten: je kunt vergelijkbare algoritmen toepassen voor vermenigvuldigen/delen met alleen optellen/aftrekken als voor het implementeren van die operaties voor willekeurig grote getallen, omdat je registers simpelweg kunt zien als arrays van bits, en dan is een operaties op arrays van bits simpelweg een operatie in basis 2.

[ Voor 34% gewijzigd door Soultaker op 20-01-2010 00:33 ]


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
quote: Soultaker
Je hebt op de basisschool toch wel geleerd hoe je twee (of meer) getallen optelt met pen en papier? Die zet je onder elkaar, en dan tel je de cijfers in de eerste kolom op. Het laatste cijfer van die som is het laatste cijfer van het antwoord, en de rest neem je mee bij het optellen van de volgende kolom, enzovoorts.
Zoiets wel, maar dan andersom - begin bij de laatste getallen, tel die bij elkaar op, en doe de overflow (of hoe dat maar heette :+ ) naar het getal links daarvan. Met de aantekening dat rekenen mijn slechtste vak was op de basisschool, kon uren naar die sommen staren zonder ook maar iets op papier te zetten, :+. Het schoolplein en de les die de groep boven ons (gedeelde klas) kreeg waren natuurlijk veel interresanter dan /1234\5, :+.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Sebazzz schreef op woensdag 20 januari 2010 @ 00:08:
Nee hoor, hoogstens HTML met frames. En Logo, en GameMaker maar voor de rest heb ik vorig jaar niets echt dynamisch gehad. Maarja, ik koos ook informatica om me tijd te verdoen dat laatste examenjaar. Goed geluk hoor :z
Herkenbaar, maar wij hebben op de middelbare school nog wel een half jaartje Delphi gedaan.

Wat een drama was dat :X

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wij kregen Pascal op de middelbare school, erg tof gezien die docent (omgeschoolde gymleraar) ook niet echt veel ervan wist :+

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ach, ik had Pascal op het mbo. De leraar stond het gewoon uit een boekje voor te lezen. :X

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

Soultaker schreef op woensdag 20 januari 2010 @ 00:29:
edit:
Wellicht moet ik dat iets toelichten: je kunt vergelijkbare algoritmen toepassen voor vermenigvuldigen/delen met alleen optellen/aftrekken als voor het implementeren van die operaties voor willekeurig grote getallen, omdat je registers simpelweg kunt zien als arrays van bits, en dan is een operaties op arrays van bits simpelweg een operatie in basis 2.
exact ;)

het word pad moeilijk als je wortel probeert te implementeren, ben er nog niet uit hoe je dat efficiënt doet.

zo dus:
Afbeeldingslocatie: http://upload.wikimedia.org/math/f/3/d/f3d1c5494f0dd502610127718bd7fad9.png
al snap ik daar geen bal van..

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Pascal hadden we in het eerste halfjaar van het HBO nog (is ondertussen vervangen door Python, waar ze veel leukere dingen mee doen), weet er niks meer van.

En ik zie een gekke E, dat betekent de som van iets. Volgens mij, :+.

ik HAAT wiskunde :(. [/wesley]

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:18

Janoz

Moderator Devschuur®

!litemod

YopY schreef op woensdag 20 januari 2010 @ 09:20:
[...]


Zoiets wel, maar dan andersom - begin bij de laatste getallen, tel die bij elkaar op, en doe de overflow (of hoe dat maar heette :+ ) naar het getal links daarvan.
Dat is ook precies wat er gebeurt (for loopje telt van 49 naar 0)


Ikzelf heb vroeger ook nog wel eens staartdelingen lopen implementeren in basic op de msx zodra ik het op school gehad had. Waren wel leuke expirimentjes. Het meest suffe was eigenlijk dat ik vooral liep te kloten met het afdrukken ipv het berekenen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

YopY schreef op woensdag 20 januari 2010 @ 09:53:

En ik zie een gekke E, dat betekent de som van iets. Volgens mij, :+.
Gosh, die E (sigma) kun je best wel zien als een doodgewoon for-loopje.
N=0 tot oneindig in het geval van deze E.
Dus zoiets:
C:
1
2
3
4
for(int n = 0; n => 0; n++) 
{
    // blijft wel even runnen  :+ 
}

[ Voor 22% gewijzigd door Verwijderd op 20-01-2010 10:21 ]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 13:34

Haan

dotnetter

Verwijderd schreef op woensdag 20 januari 2010 @ 10:17:
[...]

Gosh, die E (sigma) kun je best wel zien als een doodgewoon for-loopje.
N=0 tot oneindig in het geval van deze E.
Dus zoiets:
C:
1
2
3
4
for(int n = 0; n => 0; n++) 
{
    // blijft wel even runnen  :+ 
}
Het lijkt me dan wel een goed idee om een conditie op te nemen om uit de loop te breken (of gebruik een while loop) Ik heb verder ook geen zin om m'n hoofd te breken over die formule :P maar hij zal vast 0 naderen als n voldoende groot is, dan kan je een constante definiëren die dichtbij 0 ligt en daarop controleren.

Dus zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ellips = 0,000000000000001;
keepOnGoing = true;
n = 0;
result = 0;

while (keepOngoing)
{
    tempValue = berekenFormule(n);
    result += tempValue;
    
    if (tempValue > ellips)
    {
        n++;       
    }
    else keepOnGoing = false; 
}

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

Dat klopt, er zit namelijk nog een loopje in, die rare N (naam kwijt, volgens mij hoofdletter pi). Sigma voor sommen, die N voor producten. Wanneer die een bepaalde voorwaarde bereikt moet het gebeuren stoppen, als ik de formule correct lees (wat best eens niet zo zou kunnen zijn :+ ).

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

AtleX schreef op woensdag 20 januari 2010 @ 09:41:
Ach, ik had Pascal op het mbo. De leraar stond het gewoon uit een boekje voor te lezen. :X
Hmm, dat doet mijn huidige docent Cisco ook. Althans, degene die het hoorcollege geeft. Hij heeft gewoon van de Cisco courses een screenshot gemaakt en in zijn ppt geplakt en hij weet het toch onduidelijk te brengen. Van de Cisco courses zelf leer ik meer dan van hem. Die man is zo saai, en brengt het zo saai dat je je aandacht er echt niet bij kan houden.
De praktijkdocent is gewoon een bromsnor die niks zegt en af en toe even bromt.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Verwijderd

nvm

[ Voor 100% gewijzigd door Verwijderd op 20-01-2010 11:15 ]


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Verwijderd schreef op woensdag 20 januari 2010 @ 09:43:
[...]

exact ;)

het word pad moeilijk als je wortel probeert te implementeren, ben er nog niet uit hoe je dat efficiënt doet.

zo dus:
[afbeelding]
al snap ik daar geen bal van..
Ik ben nog bezig (althans, een vriend van me heeft het overgenomen) om uit te zoeken wat de meest efficiente wortel-benadering is in V8 (Chrome).

[ Voor 12% gewijzigd door mux op 21-01-2010 16:31 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom zou je daarvoor een efficiente wortel-benadering implementeren? De overhead van de expressie van de benadering is waarschijnlijk groter dan simpelweg Math.sqrt() die native geïmplementeerd is.
Verwijderd schreef op woensdag 20 januari 2010 @ 09:43:
[...]

exact ;)

het word pad moeilijk als je wortel probeert te implementeren, ben er nog niet uit hoe je dat efficiënt doet.

zo dus:
[afbeelding]
al snap ik daar geen bal van..
Ik heb in mijn eigen arbitrary-precision arithmetic library sqrt(s) geïmplementeerd middels e0.5∙ln s :)

[ Voor 56% gewijzigd door .oisyn op 20-01-2010 11:35 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Oei, wat een heerlijk dagje vandaag 8)
Het gaat echt als een zonnetje :o Flinke refactor acties begonnen, logica uit een UI halen, denken over een beter OO-model want, dit is vrij procedureel opgezet (zo'n beetje alles staat in een Form ), verantwoordelijkheden liggen op verkeerde plekken et cetera.
En het is niet een heel grote applicatie (< 10000 loc), dus het is lekker overzichtelijk.
Heerlijk :)

[ Voor 5% gewijzigd door Verwijderd op 21-01-2010 10:48 ]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Verwijderd schreef op donderdag 21 januari 2010 @ 10:47:
En het is niet een heel grote applicatie (< 10000 loc), dus het is lekker overzichtelijk.
Als LOC een maatstaf zou zijn voor inzichtelijkheid dan kan ik je redenatie volgen, maar nu niet. De gemiddelde programmeur is echt niet binnen 1 uur thuis in een applicatie van 10000 LOC hoor. Ik heb hier een libje van, zonder commentaar, 2219 regels en daar zit toch best wat nifty spul in waardoor het toch best wel complex wordt.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:10
GrimaceODespair schreef op maandag 18 januari 2010 @ 23:35:
[...]

Mag ik mee aaien? Wel nog eerst even een schop geven tegen zijn lazy load ass...
Lazy loading op class niveau schakel ik altijd uit. Geen dynamic proxies dan, maar ik kan er niet tegen als ik al mijn properties virtual moet maken, als dat semantisch niet nodig is in mijn domain model. :P

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Nee, dat is uiteraard niet dé maatstaaf voor overzichtelijkheid, maar het was slechts een indicatie voor de grootte. De 'dus' was verkeerd inderdaad. Het is verder een redelijk eenvoudige winform app, zonder spiffy spul. Er staat ook vrij veel commentaar in. Dus een fijn projectje om mee te stoeien zal ik maar zeggen :)

[ Voor 27% gewijzigd door Verwijderd op 21-01-2010 10:59 ]


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

.oisyn schreef op woensdag 20 januari 2010 @ 11:27:
Waarom zou je daarvoor een efficiente wortel-benadering implementeren? De overhead van de expressie van de benadering is waarschijnlijk groter dan simpelweg Math.sqrt() die native geïmplementeerd is.
Math.sqrt is echt relatief langzaam. In chrome althans. Ik heb niet veel precisie nodig dus ik probeer te kijken hoeveel sneller het te krijgen is met minder precisie. Vandaar.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Zo, een stuk berekeningen verplaatst van MySQL naar PHP en nu ben ik ipv. 3200 seconden voor mn berekeningen nog maar 600 seconden kwijt, jeuj :)

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Verwijderd schreef op donderdag 21 januari 2010 @ 10:57:
[...]

Nee, dat is uiteraard niet dé maatstaaf voor overzichtelijkheid, maar het was slechts een indicatie voor de grootte. De 'dus' was verkeerd inderdaad. Het is verder een redelijk eenvoudige winform app, zonder spiffy spul. Er staat ook vrij veel commentaar in. Dus een fijn projectje om mee te stoeien zal ik maar zeggen :)
Nou, een redelijk eenvoudige winforms app is geen 10000 loc tenzij je een paar gigantische designer.cs files hebt. Ter vergelijking, mijn 2-maandelijkse rapport van de trunk van TPP2 laat deze filetree zien en sloccount gaf op 1 december 2009 in totaal 6811 regels code in .cs files aan. Sloccount negeert commentaar, tel ik dat mee dan kom ik op 6975 regels. Ik weet dus niet wat jij onder redelijk eenvoudig verstaat, maar als je eerst zegt dat vrijwel alle code in een form zit en er 'maar' 10000 regels code zijn dan kan ik het niet eens zijn met je opmerking dat dat het 'redelijk eenvoudig' is. :P Ik denk dat het wel een paar dagen kost voordat een programmeur de 'structuur' en werking van je applicatie heeft uitgevogeld.

[ Voor 3% gewijzigd door AtleX op 21-01-2010 11:35 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 18:21

Sebazzz

3dp

AtleX schreef op donderdag 21 januari 2010 @ 11:34:
[...]
Ter vergelijking, mijn 2-maandelijkse rapport van de trunk van TPP2 laat deze filetree zien en sloccount gaf op 1 december 2009 in totaal 6811 regels code in .cs files aan.
namespace AtleX.SwissArmyKnife :D

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Uhm ja, je moet ergens je handige classes laten. :+

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

Tot nu toe gaat het allemaal prima, maar wie weet wat voor verrassingen ik nog ga tegenkomen. Punt is, het gaat lekker en goed en dat is na de afgelopen 2 weken sleep deprived te zijn geweest best fijn :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

ssj3gohan schreef op donderdag 21 januari 2010 @ 11:15:
[...]


Math.sqrt is echt relatief langzaam. In chrome althans. Ik heb niet veel precisie nodig dus ik probeer te kijken hoeveel sneller het te krijgen is met minder precisie. Vandaar.
Pfff idd wat suf zeg! Net even getest, en Math.sqrt() is idd tergend langzaam. Ik vraag me af waarom dat is. Net even een testje gedaan met Newton's method.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function time() { return new Date().getTime(); }

function fastsqrt(x)
{
    if (x <= 0)
        return 0;
    var r = x * 0.5;
    for (var i = 0; i < 12; i++)
        r = 0.5 * (r + x/r);
    return r;
}

var NUM = 100000;

var t = time();
var sum1 = 0;
for (var i = 0; i < NUM; i++)
    sum1 += Math.sqrt(i);
var t1 = time() - t;


t = time();
var sum2 = 0;
for (var i = 0; i < NUM; i++)
    sum2 += fastsqrt(i);
var t2 = time() - t;

alert (t1 + ", " + t2 + ", error: " + (sum2 - sum1));

fastsqrt() is hier vrijwel 2x zo snel als Math.sqrt(), en geeft een error van 0. Als je genoegen neemt met minder preciese kun je het aantal iteraties in de for-loop verlagen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Woot, vanmiddag (2e ronde) stresstest van m'n (relatief eenvoudige) servlet. Stresstest was eerst niet echt nodig geacht, totdat we hier tegenaan liepen. Nu nog eens proberen.

Gisteren ook gedaan, maar omdat de hoster een paar parameters verkeerd instelde (?) ging de test niet op volle sterkte. Toch nog 40.000 stemmen in een 20 minuutjes (inclusief pauze tussen tests, dus reken eens 10) verwerkt, waar normaalgesproken zoveel in een maand verwacht worden bij normaal gebruik.

Tests van vanmiddag (verwacht): 50 threads die 5000 requests (2 requests, 1 submit) uitvoeren met een interval van 200 tot 400 ms, Totaal 90.000 stemmen, 180.000 requests, en hopelijk geen problemen.

...En dan hetzelfde doen op de live server, ipv de test zoals nu :+. Die is nog iets steviger uitgevallen.

Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Heb ik al eens gezegd dat je een held bent?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

ssj3gohan schreef op donderdag 21 januari 2010 @ 12:22:
[...]


Heb ik al eens gezegd dat je een held bent?
Trek dat maar weer in. Als je gewoon Math.sqrt (de functie dus) opslaat in een lokale var dan is de code ook 2x zo snel. Het is de access op het Math object dat het traag maakt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Hm, ok. Jammer dan. Ik vreesde al zoiets.

Acties:
  • 0 Henk 'm!

  • ThaNOD
  • Registratie: Februari 2005
  • Laatst online: 17-03 14:04
Als je echt een snelle benadering van de square root wilt krijgen kun je altijd nog even kijken naar:
Wikipedia: Fast inverse square root

maar dat gaat niet werken in javascript :)

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

@.oisyn:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function time() { return new Date().getTime(); }

function fastsqrt(x)
{
    
    if (x <= 0)
        return 0;
    var r = x * 0.5;
    for (var i = 0; i < 12; i++)
        r = 0.5 * (r + x/r);
    return r;
}

var NUM = 100000;

var Mathsqrt = Math.sqrt;

var t = time();
var sum1 = 0;
for (var i = 0; i < NUM; i++)
    sum1 += Math.sqrt(i);
var t1 = time() - t;

t = time();
var sum2 = 0;
for (var i = 0; i < NUM; i++)
    sum2 += Mathsqrt(i);
var t2 = time() - t;

t = time();
var sum3 = 0;
for (var i = 0; i < NUM; i++)
    sum3 += fastsqrt(i);
var t3 = time() - t;

document.write("Math.sqrt(): " + t1 + "ms, Mathsqrt(): " + t2 + "ms, fastsqrt(): " + t3 + "ms, error on fastsqrt() vs Math.sqrt(): " + (sum3 - sum1));

Dit geeft bij mij:
quote: IE 8.0.6001.18702
Math.sqrt(): 172ms, Mathsqrt(): 125ms, fastsqrt(): 734ms, error on fastsqrt() vs Math.sqrt(): 0
quote: Firefox 3.5.7
Math.sqrt(): 4ms, Mathsqrt(): 4ms, fastsqrt(): 38ms, error on fastsqrt() vs Math.sqrt(): 0
quote: Chrome 3.0.195.38
Math.sqrt(): 24ms, Mathsqrt(): 12ms, fastsqrt(): 71ms, error on fastsqrt() vs Math.sqrt(): 0
Wat doe ik dan verkeerd? :+

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
CodeCaster schreef op donderdag 21 januari 2010 @ 13:37:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function time() { return new Date().getTime(); }

function fastsqrt(x)
{
    
    if (x <= 0)
        return 0;
    var r = x * 0.5;
    for (var i = 0; i < 12; i++)
        r = 0.5 * (r + x/r);
    return r;
}

var NUM = 100000;

var Mathsqrt = Math.sqrt;

var t = time();
var sum1 = 0;
for (var i = 0; i < NUM; i++)
    sum1 += Math.sqrt(i);
var t1 = time() - t;

t = time();
var sum2 = 0;
for (var i = 0; i < NUM; i++)
    sum2 += Mathsqrt(i);
var t2 = time() - t;

t = time();
var sum3 = 0;
for (var i = 0; i < NUM; i++)
    sum3 += fastsqrt(i);
var t3 = time() - t;

document.write("Math.sqrt(): " + t1 + "ms, Mathsqrt(): " + t2 + "ms, fastsqrt(): " + t3 + "ms, error on fastsqrt() vs Math.sqrt(): " + (sum3 - sum1));

Dit geeft bij mij:

[...]


[...]


[...]


Wat doe ik dan verkeerd? :+
Leuk om te zien dat Firefox ruim sneller is als Chrome, terwijl ze altijd zo lopen op te scheppen over hun snelle javascript engine [/rant] :)

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Jeez, wat loopt IE nog steeds hard achter dan zeg...

En tsja, Chrome is misschien langzamer met Math.sqrt(), maar het start nog steeds tien keer sneller op en het rendert ook zowaar sneller.

Het inlinen van de code zorgt trouwens ook nog best voor een flinke verbetering.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
roy-t schreef op donderdag 21 januari 2010 @ 13:39:
[...]

Leuk om te zien dat Firefox ruim sneller is als Chrome, terwijl ze altijd zo lopen op te scheppen over hun snelle javascript engine [/rant] :)
JaH, maar wie gebruikt dan ook math.sqrt() in JS behalve als je een nerd bent die een 3D engine daarin doet? [/troll] :+.

(Lees ook als: Javascript is niet bedoeld voor 3D graphics. Of, nog niet, :+ )

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:18

Janoz

Moderator Devschuur®

!litemod

Een echte nerd heeft helemaal geen sqrt nodig in zijn 3d engine. Ik kan me zo snel niet iets voor de geest halen waarbij je de sqrt nodig zou kunnen hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Normalizeren van vectoren, distance attenuation van lights.

[ Voor 41% gewijzigd door .oisyn op 21-01-2010 15:12 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:18

Janoz

Moderator Devschuur®

!litemod

Ja, normalizeren van vectoren inderdaad, maar veel berekeningen kun je ook omzeilen door hetgeen je vergelijkt gewoon te kwadrateren. De afname van licht is in principe niet lineair, sterker nog, die is kwadratisch dus eigenlijk hoef je de wortel niet eens te trekken.


maar goed, ik zal wel weer iets over het hoofd zien.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Janoz schreef op donderdag 21 januari 2010 @ 15:38:
Ja, normalizeren van vectoren inderdaad, maar veel berekeningen kun je ook omzeilen door hetgeen je vergelijkt gewoon te kwadrateren
Waarom zou je alleen maar normaliseren voor vergelijkingen :? Light vectors moet je bijv. normaliseren voor de dot product met de normal.
De afname van licht is in principe niet lineair, sterker nog, die is kwadratisch dus eigenlijk hoef je de wortel niet eens te trekken.
En in de realiteit werk je niet met een letterlijk kwadratische afname maar met een attenuation curve, waarvoor je de afstand gewoon nodig hebt.

In ieder geval is het nogal kort door de bocht om te stellen dat je geen sqrt nodig zou hebben in een 3d engine.

[ Voor 8% gewijzigd door .oisyn op 21-01-2010 15:43 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
En om dit soort code te produceren die nog honderden jaren de geschiedenis in staan, :+.

code:
1
2
3
4
5
6
7
8
float InvSqrt (float x)
{
    float xhalf = 0.5f*x;
    int i = *(int*)&x;
    i = 0x5f3759df - (i>>1);
    x = *(float*)&i;
    return x*(1.5f - xhalf*x*x);
}


Over geschiedenis gesproken, Euler 5.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$number = 0;
while (true) {
    $number++;
    if ($number % 1000000 == 0) {
        echo '.';
    }
    for ($i = 2; $i <= 20; $i++) {
        if ($number % $i != 0) {
            continue 2;
        }
    }
    break;
}
echo $number;


Doet er wel even over, :+. Even door het forumtopic bladeren, en je komt een (redelijk eenvoudige, zelfs voor mij begrijpbare) 'handmatige' oplossing tegen (zie ook hier), en je begint te prutsen.

Men ontdekt priemgetallen - in bovenstaande loop hoef je 4, 6, 8, 9, 10, 12, 14, 15, 16 en 18 niet te controleren, omdat die al deelbaar zijn door lagere getallen (2, 3, etc).

Mja, toen liep ik wat vast (dwz een mooie manier om de exponenten te vinden), dus de rest gecopypastad. Ik begin volgens mij log te snappen, maar praktisch kan ik het nog niet toepassen. Nieuwe, honderd miljoen miljard maal snellere oplossing:

PHP:
1
2
3
4
5
6
7
$primes = array(2, 3, 5, 7, 11, 13, 17, 19);
$product = 1;
foreach ($primes as $prime) {
    $product *= pow($prime, intval(log(20) / log($prime)));
}

echo $product;


euh. 2 tot de macht (10^x = 20, vul x in) delen door (10^x = 2), afronden, maal het bestaande product, rinse repeat voor alle priemgetallen tm 20. Het deel gedeelte (log(20) / log($prime)) kan ik me nog niet helemaal goed voor de geest krijgen.

Ik haat wiskunde.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
YopY schreef op donderdag 21 januari 2010 @ 15:47:
Het deel gedeelte (log(20) / log($prime)) kan ik me nog niet helemaal goed voor de geest krijgen.

Ik haat wiskunde.
Dat is een logaritme met grondgetal $prime in plaats van e. Kun je in PHP overigens ook opschrijven als log(20, $prime);

[ Voor 9% gewijzigd door PrisonerOfPain op 21-01-2010 15:52 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

xy=z <=> x=z1/y <=> y=xlog z
xlog y = zlog y / zlog x (dit volgt uit bovenstaande regel en (ab)c = ab*c)

In PHP is log(x) eigenlijk elog x oftewel ln x. e = ~2.71828

[ Voor 19% gewijzigd door .oisyn op 21-01-2010 16:15 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

.oisyn schreef op donderdag 21 januari 2010 @ 15:12:
Normalizeren van vectoren, distance attenuation van lights.
Zie je wel dat je een held bent.

Ik ben niet alleen met 3D bezig, dat heb ik in 2005 oid al met SVG gemaakt (een rubik's cube in SVG, whaddayathinkofthat), dit keer moeten er textures enzo in.

Acties:
  • 0 Henk 'm!

Verwijderd

YopY schreef op donderdag 21 januari 2010 @ 15:47:
Over geschiedenis gesproken, Euler 5.
pfft, mijn grafische rekenmachine (6 mhz, 0.8 MIPS ofzo...) had hem zonder LCD( LCM( te gebruiken in minder dan een seconde
ook geen primes gebruikt

think again ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:18

Janoz

Moderator Devschuur®

!litemod

.oisyn schreef op donderdag 21 januari 2010 @ 15:41:
Waarom zou je alleen maar normaliseren voor vergelijkingen :? Light vectors moet je bijv. normaliseren voor de dot product met de normal.
Je leest verkeerd. het is meer "Je hebt het inderdaad voor normaliseren nodig" en vervolgens "in andere omstandigheden kun je vaak ook toe met het kwadrateren van hetgeen waarmee je vergelijkt
En in de realiteit werk je niet met een letterlijk kwadratische afname maar met een attenuation curve, waarvoor je de afstand gewoon nodig hebt.
Je zou de curve kunnen kwadrateren, maar goed, aangezien jij er meer in zit neem ik gelijk aan dat via de wortel toch echt efficiënter is :).
In ieder geval is het nogal kort door de bocht om te stellen dat je geen sqrt nodig zou hebben in een 3d engine.
Eensch. Wat ik echter veel zie is dat er niet even doorgerekend wordt bij wat formules. Voor jou geldt dat natuurlijk niet. Vandaar de kort door de bocht stelling (waarbij ik hoopte dat iemand anders er op zou reageren :P. Iemand die dacht het nodig te hebben voor afstand vergelijkingen ;) )

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Janoz schreef op donderdag 21 januari 2010 @ 16:05:
Je zou de curve kunnen kwadrateren, maar goed, aangezien jij er meer in zit neem ik gelijk aan dat via de wortel toch echt efficiënter is :).
Vroegâh, met de fixed function pipeline, had je al de formule ax2 + bx + c voor de attenuation, met x de afstand tot het licht, en a, b en c kon je zelf instellen. Tegenwoordig gebruikt men meestal een texture (een simpele LUT dus). Een kwadratische lookup in de LUT is niet zo handig, dan zit de resolutie niet waar je 'm nodig hebt.
Eensch. Wat ik echter veel zie is dat er niet even doorgerekend wordt bij wat formules.
Klopt. Vaak wordt er ook veel teveel genormaliseerd, terwijl als je doorrekent je idd vaak kan delen door de kwadratische lengte ipv de lengte zelf, die natuurlijk veel goedkoper is om uit te rekenen.

[ Voor 4% gewijzigd door .oisyn op 21-01-2010 16:12 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

In het kader van de f*cking weirde bugs: Ik gebruik Ankhsvn binnen Visual Studio en heb Source Server Support aangezet in de debugging options. Als ik dus een lib in wil steppen bij het debuggen kan 'ie daar de source van van de SVN-server halen en kan ik verder debuggen. Helaas ging dat stuk, hij haalde 'm wel op volgens het output window maar kon 'm niet openen. Na lang zoeken bleek dat het pad 1 character te lang was, als ik een kortere username had gehad had het wel gewerkt. :P :X

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

/me had laatst een .zip die enkel unzipte in C:/
te lange filenames 8)7

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Ik moet in het kader van een nieuwe opdracht gaan werken met Visual Studio 2005, VB.NET (delen in C#) en SourceSafe.

Am I fucked? :+

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
.oisyn schreef op donderdag 21 januari 2010 @ 15:57:
xy=z <=> x=z1/y <=> y=xlog z
xlog y = zlog y / zlog x (dit volgt uit bovenstaande regel en (ab)c = ab*c)

In PHP is log(x) eigenlijk elog x oftewel ln x. e = ~2.71828
En je denkt dat ik dat begrijp? :+
Verwijderd schreef op donderdag 21 januari 2010 @ 15:59:
[...]

pfft, mijn grafische rekenmachine (6 mhz, 0.8 MIPS ofzo...) had hem zonder LCD( LCM( te gebruiken in minder dan een seconde
ook geen primes gebruikt

think again ;)
Pff, je speelt vals, imho :p. Een oplossing in J (volgens mij) was vijf karakters lang. Anderen gebruikten zoiets als lcm(range(0, 20)) in wiskundige programmeertalen.

De echter hardcore doet het in Befunge, en de echte hardcore in Malbolge. De laatste categorie zijn overigens geen mensen.

Acties:
  • 0 Henk 'm!

Verwijderd

YopY schreef op donderdag 21 januari 2010 @ 16:52:
Pff, je speelt vals, imho :p. Een oplossing in J (volgens mij) was vijf karakters lang. Anderen gebruikten zoiets als lcm(range(0, 20)) in wiskundige programmeertalen.
code:
1
2
3
4
5
6
7
8
9
1->C
for(a,1,20
0
repeat not(fpart(ans/A
ans+C
end
ans->C
end
disp C


zoiets was het ;) dat kan gewoon met C/J#/php/... hoor
fpart( pakt het fraction gedeelte uit een getal
De echter hardcore doet het in Befunge, en de echte hardcore in Malbolge. De laatste categorie zijn overigens geen mensen.
asm? >:)

[ Voor 13% gewijzigd door Verwijderd op 21-01-2010 17:12 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

YopY schreef op donderdag 21 januari 2010 @ 16:52:
[...]


En je denkt dat ik dat begrijp? :+
Zo hoog had ik je idd wel ingeschat ja, sorry dat mijn mensenkennis me in de steek laat :Y)
Maar zelfs jij snapt toch dat als je a*b=c hebt, en je weet b en c en je wilt a weten, dat je dan c/b moet doen? Oftewel, a*b=c <=> a=b/c

Zo ook bij machtsverheffen. Als je xy = z hebt, en je hebt z en x maar je wilt y berekenen (immers, z is die 20 en x is je deler, en je wilt weten met welke macht je x moet verheffen om 20 te krijgen), dan moet je y = xlog z doen.

Dat is feitelijk wat log(20) / log($prime) doet. Nou heeft PHP's log functie wel een extra parameter waarmee je de basis ($prime dus) kunt opgeven, maar als je dat niet hebt en je hebt puur een log() functie die met een vaste basis werkt (meestal e of 10), dan zul je iets meer werk moeten doen.

Goed, je wilt dus y = xlog 20 berekenen, maar je log functie werkt alleen met basis 10. log 20 geeft een waarde p waarbij 10p = 20, maar je wilt het weten voor xy = 20. En daar komt de regel van pas die zegt dat (ab)c = ab*c. a is hier 10, en 10b is x. Oftewel, b = log x, dus x = 10log x. Nu je x kunt uitdrukken in een macht van 10 kun je y uitrekenen. Je wilde weten wanneer xy = 20, en x was 10log x, dus dat wordt (10log x)y = 20. Haakjes wegwerken geeft 10(log x * y) = 20, dus y wordt log 20 / log x.

Maar goed, dat is het onderliggende bewijs, handiger is om gewoon aan te leren dat als ergens staat log(x) / log(y) dat er dan bedoelt wordt ylog x, ongeacht het grondtal van de betreffende log() functie ;)

[ Voor 76% gewijzigd door .oisyn op 21-01-2010 17:52 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1 ... 28 ... 201 Laatste

Dit topic is gesloten.

Let op:
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep, niet als vraagbaak