Springen naar inhoud


- - - - -

Project Euler Antwoorden


  • Log in a.u.b. om te beantwoorden
Er zijn 46 reacties in dit onderwerp

#1 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 11 oktober 2010 - 09:37

Hier komen alle antwoorden te staan van Project Euler. Als je zelf geen zin hebt om je daar aan te melden, controleer ik het wel met mijn account.

Je mag zelf een "leuk" probleem uit kiezen, en proberen op te lossen. Het hoeft niet op volgorde te lopen

Progress: 12/303 Voltooid

Antwoorden: deze worden binnenkort online gezet in 1 project.

Leden die minstens 1 opdracht hebben voltooid
Xymtrix
Vozzie
crissie1
RedThread
josk97

Dank aan: Iedereen van Vbib  :D

#2 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 11 oktober 2010 - 12:15

'k heb ze allemaal http://code.google.c...uler-solutions/

:D

#3 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 12 oktober 2010 - 00:26

Hallo,

Mooi gedaan hoor http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Zelf nooit echt veel wiskunde gezien op school ben daarom ook begonnen aan euler.

Ik zit nog een beetje achter, 1 en 2 had ik gedaan. 3 was ik nog aan't bedenken en ondertussen al aan 4 bezig die is bijna klaar...

Heb een opmerking bij jouw oplossing nr 3 en 4. Corrigeer me maar als ik me vergis.

  • 3 die geeft geen goeie uitkomst bij mij en duurt heel (oneindig) lang,...(gaf ook fouten in code omdat het niet met option strict geschreven is)

    deze dus zelf nog niet opgelost maar ik denk dat omdat het getal oneven is, de deler ook oneven moet zijn,... dus (het is onmogelijk een oneven getal te delen door een even en een "natuurlijk getal" uitkomen)
    dus from 3 to ... step 2

    ook zie ik dat je gaat tot 600851475143 maar als je het moet delen kan de deler maximum de helft zijn(om een natuurlijk getal uit te komen)

    en waarom begin je niet van boven naar beneden te zoeken, daar je de grootste moet vinden is het dan de eerste die je tegen komt.

    (en omdat de deler oneven moet zijn denk ik maximum 1/3de. dit laatste van één derde ben ik niet zeker, denk ik...)

    (der zijn oplossingen die gebruik maken van een vierkantswortel, maar niet alle formules om priemgetallen te controleren zijn correct geloof ik.)

  • 4 Optimaliseren van jouw oplossing voor dit probleem (dit gezien omdat ik er zelf met bezig was)
    Je hoeft in de 2de lus niet opnieuw tot 999 te gaan maar tot I.
    Visual Basic Code:
    Dim Answer As Integer
    Dim PrevAnswer As Integer = 0
    For I As Integer = 999 To 1 Step -1
      For X As Integer = [b]I[/b] To 1 Step -1 ' [b]<---[/b]
    	Answer = I * X
    	Dim Revers As Integer = CInt(StrReverse(Answer.ToString))
    	If Answer = Revers Then
    	  If Answer > PrevAnswer Then PrevAnswer = Answer
    	End If
      Next
    Next
    TextBox1.Text = PrevAnswer
    

De andere vragen moet ik nog bekijken. Heb de allerlaatste eens bekeken en ben eventjes flauwgevallen,...  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif (geloof dat er ondertussen al één bij gekomen is,...)

Groeten

#4 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 12 oktober 2010 - 09:01

Vozzie zei:

.. 3 die geeft geen goeie uitkomst bij mij en duurt heel (oneindig) lang,...
Bij 3 duurde het bij mij ook heel lang, en heb toen een getal dat lang bleef staan ingevuld, liet elke volgende gevonden getal zien met een textbox.

Bij 4 : Ik zie het probleem, redineer een opzet, daar ga ik dan vanuit. Vind ik toevallig meteen het antwoord kijk ik niet meer verder naar optimalisatie etc.., maar ga dat wel doen de volgende keer  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

#5 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 12 oktober 2010 - 18:01

Hallo,


Xymtrix zei:

Vozzie zei:

.. 3 die geeft geen goeie uitkomst bij mij en duurt heel (oneindig) lang,...
Bij 3 duurde het bij mij ook heel lang, en heb toen een getal dat lang bleef staan ingevuld, liet elke volgende gevonden getal zien met een textbox.

Je plaats nergens in de lus een getal in een control... Dus de gebruikers van de code zien niks.
Ook "TextBox1.Text" vul je pas in na de lus, en volgens mij komt daar 600851475143 in. Heb hierop niet gewacht, maar als ik de code lees dan veronderstel ik dat.

Wat denk je van de eerder vermelde stellingen bij probleem 3? Maximum de helft, maximum 1/3de? Van boven naar beneden aflopen? Enkel oneven getallen? Andere manier voor controle op priemgetal(is dit mogelijk)?

Xymtrix zei:

Bij 4 : Ik zie het probleem, redineer een opzet, daar ga ik dan vanuit. Vind ik toevallig meteen het antwoord kijk ik niet meer verder naar optimalisatie etc.., maar ga dat wel doen de volgende keer  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Ik had hetzelfde ook ooit verkeerd op dit forum bij een vraag om lotto nummers te genereren, doordat iemand mij erop wees ben ik het ook niet vergeten http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif.

Dit toont aan waarom , ongeveer de helft doe je dubbel. Dus kan minstens 2 keer zo rap.

Visual Basic Code:
For I As Integer = 5 To 1 Step -1
	For X As Integer = 5 To 1 Step -1
		Debug.WriteLine(String.Format("{0} * {1} = {2}{3}", I, X, I * X, IIf(X > I, " <- DUBBEL ", "")))
	Next
Next

Nog een optimalisatie voor probleem 5, "number = 20" om te beginnen en verhogen met 20 "number += 20". Want het moet zowiezo deelbaar zijn door 20. Ook uit de inner for loop springen als het niet deelbaar is. Dan gaat het minstens 10 keer vlugger.

Oplossing 1,2,4 http://www.vozzie.be/Euler.zip (Ben aan 3 bezig, maar moet nog gebruik van FPU bestuderen)

Groeten

#6 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 12 oktober 2010 - 18:41

Ik zal de optimalisaties toepassen aan de antwoorden. Verder ga ik eens verder met Probleempje 8 .

#7 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 12 oktober 2010 - 18:54

http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif hoeveel bits is dat beestje niet? http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Citeren

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Ik denk dat ik voor probleem4 op te lossen stiekem afgekeken heb van jou ,  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif Ik was vergeten te controleren of het groter was en kwam eerst 580085 uit...

Leuke bevinding, bij opdracht 2 had ik eerst alle oneven getallen opgeteld en,... het was maar 1tje verschil met de som van alle even getallen http://www.vbib.be/p...tyle_emoticons/default/biggrin.png

Groeten

#8 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 13 oktober 2010 - 08:57

Zozo... niet te snel gaan he, andere willen misschien ook wat proberen op te lossen  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif .
Overigens als je een correct antwoord heb gegeven daar, kan je naar een topic gaan waar allemaal verschillende oplossingen staan, en verschillende talen.
Ik heb kleine moeite met 8, met name het getal opslaan in een variable, iemand een goed idee ?
Wat overigens in dit topic wel zou passen is een soort spoiler tag, waardoor we de oplossing kunnen verbergen.

#9 guest_chrissie1_*

guest_chrissie1_*
  • Gasten
    Laatst bezocht

Geplaatst op 13 oktober 2010 - 10:08

Antwoord 8. Volgens mijn berekeningen zou dat dan 550380600 moeten zijn

Visual Basic Code:
Module Module1

	Sub Main()
		Dim bignumber = _
			"73167176531330624919225119674426574742355349194934" & _
			"96983520312774506326239578318016984801869478851843" & _
			"85861560789112949495459501737958331952853208805511" & _
			"12540698747158523863050715693290963295227443043557" & _
			"66896648950445244523161731856403098711121722383113" & _
			"62229893423380308135336276614282806444486645238749" & _
			"30358907296290491560440772390713810515859307960866" & _
			"70172427121883998797908792274921901699720888093776" & _
			"65727333001053367881220235421809751254540594752243" & _
			"52584907711670556013604839586446706324415722155397" & _
			"53697817977846174064955149290862569321978468622482" & _
			"83972241375657056057490261407972968652414535100474" & _
			"82166370484403199890008895243450658541227588666881" & _
			"16427171479924442928230863465674813919123162824586" & _
			"17866458359124566529476545682848912883142607690042" & _
			"24219022671055626321111109370544217506941658960408" & _
			"07198403850962455444362981230987879927244284909188" & _
			"84580156166097919133875499200524063689912560717606" & _
			"05886116467109405077541002256983155200055935729725" & _
			"71636269561882670428252483600823257530420752963450"

		Dim products = New List(Of Integer)
		Dim counter = 0
		Dim temp = 0
		For Each number In bignumber
			If counter = 0 Then
				temp = Convert.ToInt32(number)
			Else
				temp *= Convert.ToInt32(number)
			End If
			counter += 1
			If counter = 5 Then
				counter = 0
				products.Add(temp)
				Console.WriteLine("Product is:" & temp)
				temp = 0
			End If
		Next
		Console.WriteLine("Het grootste is: " & products.Max())
		Console.ReadLine()
	End Sub

End Module



#10 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3592 berichten
    Laatst bezocht gisteren, 10:26
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 13 oktober 2010 - 10:18

Xymtrix,

Misschien een vb.net 2010 solution maken (euler.sln), en per opdracht een apart project ?
Deze rarren en updaten naargelang de oplossingen gegeven worden.

Op die manier kan iedereen te code bekijken en uittesten.

Greetzzz
RedThread

#11 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 13 oktober 2010 - 11:11

chrissie1 zei:

Antwoord 8. Volgens mijn berekeningen zou dat dan 550380600 moeten zijn
...
Helaas, geeft aan niet goed te zijn.

RedThread zei:

Misschien een vb.net 2010 solution maken (euler.sln), en per opdracht een apart project ?
Deze rarren en updaten naargelang de oplossingen gegeven worden.
Goed idee.. zal deze week eens alles verzamelen, en in 1 Solution/Project stoppen. En wanneer kunnen we een bijdrage van jouw verwachten ?  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

#12 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 13 oktober 2010 - 12:08

Xymtrix zei:

chrissie1 zei:

Antwoord 8. Volgens mijn berekeningen zou dat dan 550380600 moeten zijn
...
Helaas, geeft aan niet goed te zijn.

RedThread zei:

Misschien een vb.net 2010 solution maken (euler.sln), en per opdracht een apart project ?
Deze rarren en updaten naargelang de oplossingen gegeven worden.
Goed idee.. zal deze week eens alles verzamelen, en in 1 Solution/Project stoppen. En wanneer kunnen we een bijdrage van jouw verwachten ?  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Er zijn wel verschillende manieren om iets op te lossen. Bijvoorbeeld de eerste gepresenteerde oplossing 3 werkt nog steeds niet correct, de 2de is enorm geoptimaliseerd/correcter. Verschillende andere kunnen 2 tot 10 keer vlugger... Hoe ga je dat dan oplossen in die solution?

Het zijn problemen die toch wel vragen om na te denken over hoe ze best op te lossen, niet?

Op de project Euler site is er per probleem een thread. Maar deze threads zijn gesloten. Dit zou ook kunnen op dit forum. Het laat toe elk probleem uitbundig te bespreken. Als het moet kan ik wel een script maken die per probleem een topic aanmaakt, de topic van de Euler site haalt en hier post...

Groeten

#13 guest_chrissie1_*

guest_chrissie1_*
  • Gasten
    Laatst bezocht

Geplaatst op 13 oktober 2010 - 12:22

Antwoord 8, nu wel juist.

Visual Basic Code:
Module Module1

	Sub Main()
		Dim bignumber = _
			"73167176531330624919225119674426574742355349194934" & _
			"96983520312774506326239578318016984801869478851843" & _
			"85861560789112949495459501737958331952853208805511" & _
			"12540698747158523863050715693290963295227443043557" & _
			"66896648950445244523161731856403098711121722383113" & _
			"62229893423380308135336276614282806444486645238749" & _
			"30358907296290491560440772390713810515859307960866" & _
			"70172427121883998797908792274921901699720888093776" & _
			"65727333001053367881220235421809751254540594752243" & _
			"52584907711670556013604839586446706324415722155397" & _
			"53697817977846174064955149290862569321978468622482" & _
			"83972241375657056057490261407972968652414535100474" & _
			"82166370484403199890008895243450658541227588666881" & _
			"16427171479924442928230863465674813919123162824586" & _
			"17866458359124566529476545682848912883142607690042" & _
			"24219022671055626321111109370544217506941658960408" & _
			"07198403850962455444362981230987879927244284909188" & _
			"84580156166097919133875499200524063689912560717606" & _
			"05886116467109405077541002256983155200055935729725" & _
			"71636269561882670428252483600823257530420752963450"
		Dim products = New List(Of Integer)
		Dim counter = 0
		Dim temp As New List(Of result)
		For i As Integer = 0 To 4
			temp.Add(New result() With {.product = 0, .index = 0})
		Next
		For Each number In bignumber
			Dim counter2 = counter Mod 5
			For i As Integer = 0 To 4
				If counter2 = i Then
					temp(i).product = Convert.ToInt32(number.ToString)
					temp(i).cijfers = number.ToString
					temp(i).index = 0
				Else
					temp(i).product *= Convert.ToInt32(number.ToString)
					temp(i).cijfers &= ", " & number.ToString
					temp(i).index += 1
				End If
				If temp(i).index = 4 Then
					products.Add(temp(i).product)
					Console.WriteLine("Product van " & temp(i).cijfers & " is:" & temp(i).product)
				End If
			Next
			counter += 1
		Next
		Console.WriteLine("Het grootste is: " & products.Max())
		Console.ReadLine()
	End Sub

	Public Class result
		Public Property cijfers As String
		Public Property product As Integer
		Public Property index As Integer
	End Class

End Module


resutaat is 40824.

op de lessthandot site heb ik trouwens een hidecode tag gemaakt voor phpbb 3. Vraagt wel een aanpassing van de code. Is niet zomaar een plugin.

#14 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 13 oktober 2010 - 12:36

@ Vozzie, dat zou helemaal mooi zijn. Als de beheerder dat goed vind.

@ crissie1, antwoord klopt, alleen je code werkt niet bij mij.. En misschien de HELE lange string afkorten.. Nu is het forum wel HEEL erg breed http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

[edit] Ik heb denk ik het vraagstuk verkeerd begrepen bij  
http://www.vbib.be/p...tyle_emoticons/default/biggrin.png  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

#15 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3592 berichten
    Laatst bezocht gisteren, 10:26
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 13 oktober 2010 - 13:03

Ik zou enkel code in de solution plaatsen die de correcte oplossing bied.
Een oplossing die niet correct werkt is in mijn ogen geen oplossing.

Ten tweede zou ik de code updaten met die code die het performanst is.
Iedereen kan een "eigen interpretatie" bieden, maar die code die het snelst het resultaat geeft zal later het meeste kans hebben om in een produktieomgeving te draaien.
maw, als iemand anders voor een oplossing code kan posten die performanter is dan word dat de code voor die bepaalde oplossing.

We zouden inderdaad een aparte thread per vraagstuk kunnen maken, al heb ik zo mijn vragen of we wel voldoende publiek vinden om alle oplossingen (of grotendeels dan toch) hier op te lossen.
Momenteel zie ik hier slechts een 3-tal personen die dit ter harte nemen.
Moest dit veranderen, dan mag Vozzie van mij zijn script gebruiken.

@Xymtrix > jaaaa, ben ondertussen ook begonnen aan een vraagstuk. Had zo'n reactie wel verwacht http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Greetzzz
RedThread

#16 guest_chrissie1_*

guest_chrissie1_*
  • Gasten
    Laatst bezocht

Geplaatst op 13 oktober 2010 - 13:09

Tja, ik heb de string niet verzonnen http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif en je hebt ze volledig nodig om het resultaat te vinden.

Het is een 2010 consoleapplicatie.

#17 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 13 oktober 2010 - 13:51

Hallo,

Ik begreep de opdracht voor probleem 8 eerst niet  http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif .(zocht het te ver)

Dit heb ik ervan gemaakt dankzij het voorbeeld van chrissie.

Visual Basic Code:
	Function Problem8() As Integer
		Dim longNumber As String = _
			"73167176531330624919225119674426574742355349194934" & _
			"96983520312774506326239578318016984801869478851843" & _
			"85861560789112949495459501737958331952853208805511" & _
			"12540698747158523863050715693290963295227443043557" & _
			"66896648950445244523161731856403098711121722383113" & _
			"62229893423380308135336276614282806444486645238749" & _
			"30358907296290491560440772390713810515859307960866" & _
			"70172427121883998797908792274921901699720888093776" & _
			"65727333001053367881220235421809751254540594752243" & _
			"52584907711670556013604839586446706324415722155397" & _
			"53697817977846174064955149290862569321978468622482" & _
			"83972241375657056057490261407972968652414535100474" & _
			"82166370484403199890008895243450658541227588666881" & _
			"16427171479924442928230863465674813919123162824586" & _
			"17866458359124566529476545682848912883142607690042" & _
			"24219022671055626321111109370544217506941658960408" & _
			"07198403850962455444362981230987879927244284909188" & _
			"84580156166097919133875499200524063689912560717606" & _
			"05886116467109405077541002256983155200055935729725" & _
			"71636269561882670428252483600823257530420752963450"
		Dim result As Integer = -1
		For i As Integer = 0 To longNumber.Length - 5
			Dim s As String = longNumber.Substring(i, 5)
			Dim product As Integer = 1
			For j As Integer = 0 To s.Length - 1
				product *= Integer.Parse(s(j))
			Next
			If product > result Then
				result = product
			End If
		Next
		Return (result)
	End Function

Ok, als het script/tooltje nodig is, laat het dan maar weten. Gaat precies toch goed vooruit. Na de eerste reeks zal het zwaarder worden denk ik...

Toch ook al 3 mensen. Best leuk zo in team,... Ik heb soms moeite met het interpreteren van opdrachten en die zijn dan door anderen duidelijk geworden.

Groeten

#18 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 13 oktober 2010 - 13:56

Ik was ook te ver aan het denken.. Ik snap soms ook niet de vraagstukken, mijn wiskundeknobbel is en wiskundedeuk geworden ondertussen http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Probleem 11
87 * 97 * 94 * 89 = 70600674 , Eigenlijk niks geprogrammeerd, maar gewoon gekeken als een puzzel..

(op de eerste pagina staat nog de lange string)

#19 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 13 oktober 2010 - 21:59

RedThread zei:

Ik was begonnen met vraag 25, maar ik ben tegen de limitatie van .net opgelopen (double is niet groot genoeg voor de oplossing van 1000 digits te bekomen).
Moesten jullie aan vraag 25 komen, dan hebben jullie misschien iets aan onderstaande code.

...

Ik ben een poos geleden ook begonnen op projecteuler en ter lering en vermaak heb ik toen mijn eigen BigNumber klasse gemaakt. Zie hier:

Visual Basic Code:
Module Module1

	Sub Main()

		'Eerste getal in de Fibonacci reeks zoeken met 1000 karakters
		Dim fprev As BigNumber = New BigNumber(1)
		Dim fthis As BigNumber = New BigNumber(1)
		Dim result As BigNumber
		Dim c As Integer = 2 'We hebben reeds 2 Fibonacci gedefinieerd

		Do
			c += 1
			Console.WriteLine©
			result = fprev + fthis
			fprev = fthis
			fthis = result
		Loop Until result.Value.Length >= 1000
		Console.WriteLine(vbCrLf & result.Value & vbCrLf)


		' Nog een voorbeeld berekening
		result = New BigNumber("12345678901234567890") * New BigNumber("999988887777666655554444")
		Console.WriteLine(result.Value)

		Console.ReadKey()
	End Sub



	'Josk79's klasse om gigantische berekeningen te maken
	Public Class BigNumber
		Private _value As String = "0"

		Public Shadows ReadOnly Property ToString() As String
			Get
				Return Me.Value
			End Get
		End Property

		Sub New()
		End Sub
		Sub New(ByVal value As String)
			Me.Value = value
		End Sub

		Public Property Value() As String
			Get
				Return _value
			End Get

			Set(ByVal value As String)
				_value = value

				'valideren
				If _value.Length = 0 Then
					_value = "0"
				Else
					While _value.Substring(0, 1) = "0"
						If _value.Length = 1 Then Exit While
						_value = _value.Substring(1)
					End While
				End If
			End Set
		End Property

		Public Shared Operator +(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As BigNumber
			Dim sum As Integer, remainder As Integer = 0
			Dim total As String = ""

			For i = 0 To Math.Max(num1.Value.Length, num2.Value.Length) - 1
				sum = remainder + chrright(num1.Value, i) + chrright(num2.Value, i)
				remainder = sum \ 10
				sum = sum Mod 10
				total = CStr(sum) & total
			Next
			If remainder > 0 Then total = CStr(remainder) + total
			Return New BigNumber(total)
		End Operator
		Public Shared Operator +(ByVal num1 As BigNumber, ByVal num2 As Integer) As BigNumber
			Return num1 + New BigNumber(num2.ToString)
		End Operator

		Public Shared Operator *(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As BigNumber
			Dim total As New BigNumber(0)
			Dim m As Integer
			For i = 0 To num2.Value.Length - 1
				For j = 0 To num1.Value.Length - 1
					m = chrright(num2.Value, i) * chrright(num1.Value, j)
					total += New BigNumber(m.ToString & New String("0"c, i + j))
				Next
			Next
			Return total
		End Operator

		Public Shared Operator *(ByVal num1 As BigNumber, ByVal num2 As Integer) As BigNumber
			Return num1 * New BigNumber(num2.ToString)
		End Operator

		Public Shared Operator ^(ByVal num1 As BigNumber, ByVal num2 As Integer) As BigNumber
			'Bij hoge machten kon dit wel eens een poos duren.
			Dim total As New BigNumber(1)
			For i = 1 To num2
				total = total * num1
			Next i
			Return total
		End Operator

		'Vergelijkingen. Lang leve de strings!
		Public Shared Operator >(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			If num1.Value.Length = num2.Value.Length Then
				Return num1.Value > num2.Value
			Else
				Return num1.Value.Length > num2.Value.Length
			End If
		End Operator

		Public Shared Operator <(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			If num1.Value.Length = num2.Value.Length Then
				Return num1.Value < num2.Value
			Else
				Return num1.Value.Length < num2.Value.Length
			End If
		End Operator

		Public Shared Operator =(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			Return num1.Value = num2.Value
		End Operator

		Public Shared Operator <>(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			Return num1.Value <> num2.Value
		End Operator

		Public Shared Operator <=(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			Return num1 < num2 OrElse num1 = num2
		End Operator

		Public Shared Operator >=(ByVal num1 As BigNumber, ByVal num2 As BigNumber) As Boolean
			Return num1 > num2 OrElse num1 = num2
		End Operator

	Private Shared Function chrright(ByVal str1 As String, ByVal pos As Integer) As Integer
		If pos >= str1.Length Then Return 0
		Return Integer.Parse(str1.Substring(str1.Length - pos - 1, 1))
	End Function

	End Class



	'Controleer of string een Palindroom is (LEPEL)
	Function ispalindroom(ByVal str As String) As Boolean
		For i = 0 To str.Length \ 2
			If str.Substring(i, 1) <> str.Substring(str.Length - 1 - i, 1) Then Return False
		Next
		Return True
	End Function

End Module



#20 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 13 oktober 2010 - 22:11

Hihi, ik heb er weer lol in.

Hier opdracht 16, gebruik makende van mijn rekenklasse BigNumber:

Visual Basic Code:
	Sub Main()
		Dim c As Integer = 0

		Dim result As BigNumber
		result = New BigNumber(2) ^ 1000
		For Each ch As Char In result.Value
			c += Integer.Parse(ch)
		Next
		Console.WriteLine©
		Console.ReadKey()
	End Sub


Dit duurt even. Je kunt natuurlijk ook system.numerics.biginteger of java.math.biginteger gebruiken.

#21 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 13 oktober 2010 - 22:14

Probleem 20, wederom middels BigNumber klasse uit bovenstaande post:

Visual Basic Code:
	Sub Main()
		Dim result As BigNumber = New BigNumber(1)

		For c As Integer = 1 To 100
			result *= c
		Next

		Dim sum As Integer = 0
		For Each ch As Char In result.Value
			sum += Integer.Parse(ch)
		Next

		Console.WriteLine(sum)
		Console.ReadKey()
	End Sub



#22 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 13 oktober 2010 - 23:11

Hallo,

Nice BigInteger class, josk. http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif

Hier een script om alle opdrachten te downloaden.(Nog een paar bugs maar deze download het grootste deel van de opgaves.) Opslaan als .vbs en bij uitvoeren download hij alles in de map vh script. Je kan het script configureren door de SAVE_AS variable zijn initiele waarde aan te passen. Mogelijkheden HTML, Text en PhpBB formaat.

Visual Basic Code:
Option Explicit

Const SAVE_AS_HTML	= 1
Const SAVE_AS_TXT	= 2
Const SAVE_AS_PHPBB	= 3

Dim SAVE_AS : SAVE_AS	= SAVE_AS_PHPBB ' <- verander hier 

Sub Main()
	Dim iProblem
	Dim sUrl, sElement
	Dim oFso, oDomDocument
	Set oFso = CreateObject("Scripting.FileSystemObject")
	For iProblem = 1 To 305
		sUrl = "http://projecteuler.net/index.php?section=problems&id=" & iProblem
		Set oDomDocument = Download(sUrl)
		Select Case SAVE_AS
		Case SAVE_AS_HTML
			SaveHtmlFile iProblem, oDomDocument, oFso, sUrl
		Case SAVE_AS_TXT
			SaveTextFile iProblem, oDomDocument, oFso, sUrl
		Case SAVE_AS_PHPBB
			SavePhpBbFile iProblem, oDomDocument, oFso, sUrl
		End Select
		Set oDomDocument = Nothing
	Next
End Sub

Sub SavePhpBbFile(ByVal iProblem, ByVal oDomDocument, ByVal oFso, ByVal sUrl)
	Dim i
	Dim sPath, sFileName, sElement
	Dim oElements, oElement, oImgElement, oStream
	Set oElements = oDomdocument.GetElementsByTagName("h2")
	For Each oElement In oElements
		If UCase(Left(Trim(oElement.Text), 7)) = "PROBLEM" Then
			sPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
			sFileName = oFso.BuildPath(sPath, "Problem" & PadLeft(iProblem, "0", 3) & ".phpbb.txt")
			Set oStream = oFso.CreateTextFile(sFileName)
			oStream.Write "[" & "quote=""[" & "url=" & sUrl & "]Project Euler - " & oElement.Text & " - " & oElement.NextSibling.Text & "["& "/" & "url]""]"
			sElement = oElement.parentNode.SelectSingleNode("div[@class='problem_content']").Text
			For i = 1 To Len(sElement) - 1
				If Mid(sElement, i, 2) = ". " Then
					If Mid(sElement, i - 1, 1) <> "." Then
						oStream.Write Mid(sElement, i, 1) & vbCrLf
						i = i + 1
					Else
						oStream.Write Mid(sElement, i, 1)
					End If
				ElseIf Asc(Mid(sElement, i, 1)) <> 63 Then
					oStream.Write Mid(sElement, i, 1)
				End If
			Next
			oStream.Write Mid(sElement, i, 1)
			oStream.Write "[" & "/" & "quote]"
			oStream.Close
		End If
	Next
End Sub

Sub SaveHtmlFile(ByVal iProblem, ByVal oDomDocument, ByVal oFso, ByVal sUrl)
	Dim sPath, sFileName
	Dim oElements, oElement, oImgElement, oStream
	Set oElements = oDomdocument.GetElementsByTagName("h2")
	For Each oElement In oElements
		If UCase(Left(Trim(oElement.Text), 7)) = "PROBLEM" Then
			Set oElement = oElement.parentNode
			Set oImgElement = oElement.SelectSingleNode("div[@class='print']")
			If Not (oImgElement Is Nothing) Then
				oElement.RemoveChild oImgElement
			End If
			sPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
			sFileName = oFso.BuildPath(sPath, "Problem" & PadLeft(iProblem, "0", 3) & ".html")
			Set oStream = oFso.CreateTextFile(sFileName)
			On Error Resume Next
			Err.Clear
			oStream.Write "<html><head><title>Project Euler - Problem " & iProblem & "</title></head><body>" & oElement.Xml & "<a href=""" & sUrl & """>Project Euler - Problem " & iProblem & "</a></body></html>"
			oStream.Close
			If Err Then oFso.DeleteFile sFileName
			Set oStream = Nothing
		End If
	Next
End Sub

Sub SaveTextFile(ByVal iProblem, ByVal oDomDocument, ByVal oFso, ByVal sUrl)
	Dim i
	Dim sPath, sFileName, sElement
	Dim oElements, oElement, oImgElement, oStream
	Set oElements = oDomdocument.GetElementsByTagName("h2")
	For Each oElement In oElements
		If UCase(Left(Trim(oElement.Text), 7)) = "PROBLEM" Then
			sPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
			sFileName = oFso.BuildPath(sPath, "Problem" & PadLeft(iProblem, "0", 3) & ".txt")
			Set oStream = oFso.CreateTextFile(sFileName)
			oStream.Write vbTab & oElement.Text & " - " & oElement.NextSibling.Text & vbCrLf & vbTab
			For i = 1 To Len(oElement.Text & " - " & oElement.NextSibling.Text)
				oStream.Write "-"
			Next
			oStream.WriteLine vbCrLf & vbCrLf & sUrl & vbCrLf
			sElement = oElement.parentNode.SelectSingleNode("div[@class='problem_content']").Text
			For i = 1 To Len(sElement) - 1
				If Mid(sElement, i, 2) = ". " Then
					If Mid(sElement, i - 1, 1) <> "." Then
						oStream.Write Mid(sElement, i, 1) & vbCrLf
						i = i + 1
					Else
						oStream.Write Mid(sElement, i, 1)
					End If
				ElseIf Asc(Mid(sElement, i, 1)) <> 63 Then
					oStream.Write Mid(sElement, i, 1)
				End If
			Next
			oStream.Write Mid(sElement, i, 1)
			oStream.Close
		End If
	Next
End Sub

Function PadLeft(ByVal s, ByVal char, ByVal total)
	Dim i:For i = Len(s) To total - 1
		s = char & s
	Next
	PadLeft = s
End Function

Function Download(ByVal sUrl)
	Dim oHttpRequest: Set oHttpRequest = CreateObject("Microsoft.XmlHttp")
	oHttpRequest.open "GET", sUrl, False
	oHttpRequest.send
	Dim oDomDocument: Set oDomDocument = CreateObject("msxml2.DOMDocument")
	oDomdocument.LoadXml oHttpRequest.ResponseText
	Set Download = oDomDocument
	Set oHttpRequest = Nothing
End Function


Main()

PhpBB formaat ziet er dan zo uit

Citeren

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.

Groeten

#23 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 14 oktober 2010 - 10:27

Wow, gaat snel zo.
Mooie Class josk, heel handig aangezien ik geen 2010 heb.
Jouw opdracht 16 is prima, maar bij opdracht 20 krijg ik 0 ??

Miss toch handig om per probleem een topic te openen, loopt nogal door elkaar zo, en is niet echt overzichtelijk.. en de snelste code in die topic is natuurlijk de beste antwoord..

#24 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 14 oktober 2010 - 11:36

Hallo,

Euler test console applicatie gemaakt.

Visual Basic Code:
Class Euler
	Private Function IsPrime(ByVal number As Integer) As Boolean
		For i As Integer = 2 To number - 1
			If (number Mod i) = 0 Then
				Return False
			End If
		Next
		Return True
	End Function
	Private Function IsPrime(ByVal number As Long) As Boolean
		For i As Long = 2 To number - 1
			If (number Mod i) = 0 Then
				Return False
			End If
		Next
		Return True
	End Function

	Function Problem3() As Object
		Const TARGET As Long = 600851475143
		Dim result As Long = 1
		Dim max As Long = TARGET
		'Dim original As Long = 1
		For i As Long = 3 To max Step 2
			If TARGET Mod i = 0 Then
				If IsPrime(i) Then
					max = CLng(max / i)
					If result < i Then result = i
					'original *= i
					If max < 3 Then Exit For
				End If
			End If
		Next
		' original = 600851475143
		Return result
	End Function
	Function Problem4() As Object
		Dim Answer As Integer
		Dim PrevAnswer As Integer = 0
		For I As Integer = 999 To 1 Step -1
			For X As Integer = I To 1 Step -1
				Answer = I * X
				Dim Revers As Integer = CInt(StrReverse(Answer.ToString))
				If Answer = Revers Then
					If Answer > PrevAnswer Then PrevAnswer = Answer
				End If
			Next
		Next
		Return PrevAnswer
	End Function
	Function Problem5() As Object
		Dim number As Integer = 20
		Do
			Dim found As Boolean = True
			For i As Integer = 2 To 20
				If (number Mod i) <> 0 Then
					found = False
					Exit For
				End If
			Next
			If found Then Return number
			number += 20
		Loop
	End Function

	Function Problem7() As Object
		Dim count As Integer = 0
		Dim number As Integer = 1
		Do
			If IsPrime(number) Then
				count += 1
				If count > 10001 Then
					Exit Do
				End If
			End If
			number += 1
		Loop
		Return number
	End Function
	Function Problem8() As Object
		Dim longNumber As String = _
			"73167176531330624919225119674426574742355349194934" & _
			"96983520312774506326239578318016984801869478851843" & _
			"85861560789112949495459501737958331952853208805511" & _
			"12540698747158523863050715693290963295227443043557" & _
			"66896648950445244523161731856403098711121722383113" & _
			"62229893423380308135336276614282806444486645238749" & _
			"30358907296290491560440772390713810515859307960866" & _
			"70172427121883998797908792274921901699720888093776" & _
			"65727333001053367881220235421809751254540594752243" & _
			"52584907711670556013604839586446706324415722155397" & _
			"53697817977846174064955149290862569321978468622482" & _
			"83972241375657056057490261407972968652414535100474" & _
			"82166370484403199890008895243450658541227588666881" & _
			"16427171479924442928230863465674813919123162824586" & _
			"17866458359124566529476545682848912883142607690042" & _
			"24219022671055626321111109370544217506941658960408" & _
			"07198403850962455444362981230987879927244284909188" & _
			"84580156166097919133875499200524063689912560717606" & _
			"05886116467109405077541002256983155200055935729725" & _
			"71636269561882670428252483600823257530420752963450"
		Dim result As Long = -1
		For i As Integer = 0 To longNumber.Length - 5
			Dim s As String = longNumber.Substring(i, 5)
			Dim product As Integer = 1
			For j As Integer = 0 To s.Length - 1
				product *= Integer.Parse(s(j))
			Next
			If product > result Then
				result = product
			End If
		Next
		Return (result)
	End Function
	Function Problem9() As Object
		For k As Long = 500 To 1 Step -1
			For j As Long = k - 1 To 1 Step -1
				For i As Long = j - 1 To 1 Step -1
					If i + j + k = 1000 Then
						If (i ^ 2) + (j ^ 2) = (k ^ 2) Then
							Return (i * j * k)
						End If
					End If
				Next
			Next
		Next
		Return Nothing
	End Function
	Function Problem40() As Object
	End Function

	Friend Shared Sub Main()
		Dim euler As New Euler()
		Dim problems() As Problem = New Problem() { _
			New Problem() With {.id = "3", .action = New ProblemDelegate(AddressOf euler.Problem3)}, _
			New Problem() With {.id = "4", .action = New ProblemDelegate(AddressOf euler.Problem4)}, _
			New Problem() With {.id = "5", .action = New ProblemDelegate(AddressOf euler.Problem5)}, _
			New Problem() With {.id = "7", .action = New ProblemDelegate(AddressOf euler.Problem7)}, _
			New Problem() With {.id = "8", .action = New ProblemDelegate(AddressOf euler.Problem8)}, _
			New Problem() With {.id = "9", .action = New ProblemDelegate(AddressOf euler.Problem9)}, _
			New Problem() With {.id = "40", .action = New ProblemDelegate(AddressOf euler.Problem40)} _
		}
		Do
			Console.WriteLine("Enter ""S"" to open the Euler Website.")
			Console.WriteLine("Enter ""P"" for a list of problems.")
			Console.WriteLine("Enter ""E"" to exit.")
			Console.WriteLine("Or enter a problem id.")
			Console.Write("Your choice: ")
			Dim answer As String = Console.ReadLine()
			Select Case answer.ToUpper()
				Case "S"
					Process.Start("http://projecteuler.net/")
				Case "P"
					Dim count As Integer
					For Each problem As Problem In problems
						count += 1
						If count = Console.WindowHeight Then
							WaitForKey()
							count = 1
						End If
						Console.WriteLine("Problem " & problem.id)
					Next
					WaitForKey()
				Case "E"
					Exit Do
				Case Else
					Dim problem As Problem = Nothing
					For Each temp As Problem In problems
						If temp.id = answer Then
							problem = temp
							Exit For
						End If
					Next
					If problem Is Nothing Then
						Console.WriteLine(vbCrLf & "No such problem!" & vbCrLf)
					Else
						Dim sw As Stopwatch
						Dim result As Object
						Threading.Thread.CurrentThread.Priority = Threading.ThreadPriority.AboveNormal
						sw = Stopwatch.StartNew()
						result = problem.action.Invoke()
						sw.Stop()
						Threading.Thread.CurrentThread.Priority = Threading.ThreadPriority.Normal
						Console.WriteLine(vbCrLf & "Problem " & problem.id & " = " & result.ToString())
						Console.WriteLine("Time: " & sw.Elapsed.ToString() & vbCrLf)
					End If
					WaitForKey()
			End Select
			Console.Clear()
		Loop
	End Sub

	Private Shared Sub WaitForKey()
		Console.Write("Press any key to continue...")
		Console.ReadKey()
		Console.WriteLine()
	End Sub

	Private Class Problem
		Public id As String
		Public action As ProblemDelegate
	End Class

	Private Delegate Function ProblemDelegate() As Object

End Class

Groeten

#25 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3592 berichten
    Laatst bezocht gisteren, 10:26
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 14 oktober 2010 - 12:01

Het project Euler topic heeft nu zijn eigen plaats gekregen op het forum zoals gevraagd.

Maak per opgelost vraagstuk slechts 1 topic aan en stel daar je vragen over enkel die opdracht.

Xymtric & Vozzie > beide (Xymtric voor de duur van het project) moderator rechten om alles in goede banen te leiden.

Xymtric, ik neem aan dat je het algemeen overzicht bewaard en alles up-to-date houd (oplossingen, solution, etc...)

Greetzzzz
RedThread


Note : Xymtric, ik las ergens dat je enkel vb 2008 had ? Liefst de express ed. 2010 gebruiken voor dit project omdat je anders problemen gaat ondervinden met onderlinge verschillen (die biginteger bv..)

Note 2 : Heb al zoveel mogelijk verplaatst, helaas kan ik een afzonderlijke post niet "moven". Ik heb dus een copy/paste moeten doen.
Feel free om je bijdrages in respectievelijk topics te verplaatsen

#26 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 14 oktober 2010 - 13:02

Ik zou willen voorstellen om als voorwaarde te stellen dat de antwoorden binnen deze topic een klasse moeten zijn die aan een bestaande opmaak moeten voldoen, bijv:

Visual Basic Code:
Public Interface IEulerSolution
  Function Solve() as string
  Event OnDebugMessage(str as string) 'In plaats van console.writeline dit event raisen
End Interface


Zo zullen alle oplossingen dezelfde opbouw hebben.

Visual Basic Code:
Public Class Problem001
  Implements IEulerSolution

  Public Event OnDebugMessage(str as string) implements IEulerSolution.OnDebugMessage

  Public Function Solve() as string implements IEulerSolution.Solve
	 '... code om tot de oplossing te komen
	 return solution.tostring()
  End Function

End Class


Mee eens? Of op tegen?

** edit ** ik was bij implements.functionnaam de functionnaam vergeten!

#27 Xymtrix

Xymtrix

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 533 berichten
    Laatst bezocht 13 aug 2012 15:48
  • LocatieNederland

Geplaatst op 14 oktober 2010 - 13:50

Super bedankt RedThread  :( Ik zal m'n best gaan doen om alles bij te houden, en dit tot een succesvol project te maken(samen met Vozzie dan :D).

Ik zal thuis 2010 downloaden, op m'n werk heb ik nog XP dus daar zal het niet gaan.
IK zal vanavond thuis alles verzamelen en in 1 project soppen.

#28 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3592 berichten
    Laatst bezocht gisteren, 10:26
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 14 oktober 2010 - 14:03

Xymtrix zei:

Super bedankt RedThread  :( Ik zal m'n best gaan doen om alles bij te houden, en dit tot een succesvol project te maken(samen met Vozzie dan http://www.vbib.be/p...tyle_emoticons/default/icon_cool.gif).

Graag gedaan, hoop ook dat jullie het tot een goed einde brengen.

Xymtrix zei:

op m'n werk heb ik nog XP dus daar zal het niet gaan.
IK zal vanavond thuis alles verzamelen en in 1 project soppen.

XP met SP3 zou geen probleem mogen zijn. Maar in veel bedrijven draait men nog SP2, kan ervan meepraten  :D

Greetzzzz
RedThread

#29 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 14 oktober 2010 - 16:35

@redthread: nice job :D

josk79 zei:

Ik zou willen voorstellen om als voorwaarde te stellen dat de antwoorden binnen deze topic een klasse moeten zijn die aan een bestaande opmaak moeten voldoen, bijv:

Visual Basic Code:
Public Interface IEulerSolution
  Function Solve() as string
  Event OnDebugMessage(str as string) 'In plaats van console.writeline dit event raisen
End Interface


Zo zullen alle oplossingen dezelfde opbouw hebben.

Visual Basic Code:
Public Class Problem001
  Implements IEulerSolution

  Public Event OnDebugMessage(str as string) implements IEulerSolution

  Public Function Solve() as string implements IEulerSolution
	 '... code om tot de oplossing te komen
	 return solution.tostring()
  End Function

End Class


Mee eens? Of op tegen?

Zat al op hetzelfde pad... Dacht aan een programma(Euler.exe) waarnaar een verwijzing kan gemaakt worden. Dus dat je een Library(plugin) schrijft die in het programma hangt. XitrixEuler.dll, VozzieEuler.dll, JosEuler.dll,....

Alle dll's moeten in een subdirectory komen van exe, zodat deze die kan laden,...(voor debug redenen kunnen dll's hun path doorgeven aan exe, zo kan men vanuit visual studio debuggen)

Via een interface is bepaald hoe de procedures geexporteerd worden.

Dan kan Euler.exe verschillende personen hun oplossing laden en uitvoeren, tijd testen en uitkomst controleren....

Groeten

#30 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 14 oktober 2010 - 22:51

RedThread zei:

Het project Euler topic heeft nu zijn eigen plaats gekregen op het forum zoals gevraagd.

dat was vlug

RedThread zei:

Maak per opgelost vraagstuk slechts 1 topic aan en stel daar je vragen over enkel die opdracht.

Dus die 18 - 67 opsplitsen?

Misschien in het eerste bericht in deze thread links plaatsen naar de antwoord threads in juiste volgorde...?

RedThread zei:

Xymtric & Vozzie > beide (Xymtric voor de duur van het project) moderator rechten om alles in goede banen te leiden.

Xymtric, ik neem aan dat je het algemeen overzicht bewaard en alles up-to-date houd (oplossingen, solution, etc...)

Is er al een solution?

RedThread zei:

Note : Xymtric, ik las ergens dat je enkel vb 2008 had ? Liefst de express ed. 2010 gebruiken voor dit project omdat je anders problemen gaat ondervinden met onderlinge verschillen (die biginteger bv..)

Ik heb (ook) enkel 2008.

RedThread zei:

Note 2 : Heb al zoveel mogelijk verplaatst, helaas kan ik een afzonderlijke post niet "moven". Ik heb dus een copy/paste moeten doen.
Feel free om je bijdrages in respectievelijk topics te verplaatsen

Ik zie dat je het phpBB formaat gebruikt. Zullen dan ook maar de posts in de gaten houden of dit formaat aanwezig is. Lijkt me maar eerlijk telkens een link naar de Project Euler site te voorzien.

Groeten




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)