Springen naar inhoud


- - - - -

Project Euler Antwoorden


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

#31 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3612 berichten
    Laatst bezocht 01 mrt 2024 09:09
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 15 oktober 2010 - 08:39

Dag Vozzie/Xymtric,

- Ja, best 18-67 opslitsen zodat elk vraagstuk zijn eigen topic krijgt. ook al is de code (vrijwel) identiek. Dan blijven de eventuele specieke vragen ook gescheiden.

- Ik verwacht dat de solution van Xymtric of jou komt Vozzie. Er werd ook in je vorige posts geopperd voor dll's,classes,plugins,testconsoles,etc... Jullie zijn dus vrij om dit in te vullen naar eigen goeddunken. Maar vergeet vooral niet dat het low level moet zijn zodat ook de programmeur met iets mindere kennis zijn bijdrage kan doen. Misschien onderling (Xymtrix/Vozzie) overleggen, uitwerken en dan vrijgeven ?

- .net 2008/2010. Mijn gedacht is om altijd de laatst officiële versie te gebruiken van .net. Mijn oplossing 25 met zijn biginteger zal dus niet werken in 2008. Daarom misschien allemaal op dezelfde lijn blijven ? Waarom werk je eigenlijk in 2008 terwijl je gratis 2010 express kunt gebruiken.
Nu, als jullie het in 2008 willen houden moet dat duidelijk vermeld staan want anders zullen er oplossing binnenkomen in 2010 die misschien niet gaan werken in 2008.

- Ja, ik heb jouw geweldig scriptje gebruikt om alle oplossing te downloaden en deze te posten. Was een snelle en goede oplossing. :D
Er staat al een link naar Euler in de sticky post van Xymtric maar als jullie dat bij elk vraagstuk willen doen, geen probleem.


Greetzzz

#32 Xymtrix

Xymtrix

    Master Developer

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

Geplaatst op 15 oktober 2010 - 09:59

Ik stem dan voor losstaande classes: Problem25.vb:
Visual Basic Code:
 Public Class Problem25

Public Function Solve() As Long

End Function

End Class



#33 Vozzie

Vozzie

    Moderator

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

Geplaatst op 15 oktober 2010 - 12:09

RedThread zei:

- Ik verwacht dat de solution van Xymtric of jou komt Vozzie. Er werd ook in je vorige posts geopperd voor dll's,classes,plugins,testconsoles,etc... Jullie zijn dus vrij om dit in te vullen naar eigen goeddunken. Maar vergeet vooral niet dat het low level moet zijn zodat ook de programmeur met iets mindere kennis zijn bijdrage kan doen. Misschien onderling (Xymtrix/Vozzie) overleggen, uitwerken en dan vrijgeven ?

Ja het zal misschien een probleem worden met een host programma en libraries om iedereen te kunnen "instappen",.... Maar zo'n host programma lijkt me toch wel iets leuk :P

RedThread zei:

- .net 2008/2010. Mijn gedacht is om altijd de laatst officiële versie te gebruiken van .net. Mijn oplossing 25 met zijn biginteger zal dus niet werken in 2008. Daarom misschien allemaal op dezelfde lijn blijven ? Waarom werk je eigenlijk in 2008 terwijl je gratis 2010 express kunt gebruiken.
Nu, als jullie het in 2008 willen houden moet dat duidelijk vermeld staan want anders zullen er oplossing binnenkomen in 2010 die misschien niet gaan werken in 2008.

Omdat ik (om te ontspannen) op het werk op dit forum zit. En op't werk gebruiken we geen gratis versies.

Thuis zou'k kunnen 2010 op een computer bestemd voor recreatie zetten,...

@Ximtrix : Gaan we in PB de structuur bespreken? We zijn met 2 stemmen zal moeilijk worden. Anders een tutorial schrijven hoe ze kunnen problemen oplossen volgens een bepaalde standaard vormgeving.

Groeten

#34 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 07 apr 2020 23:55

Geplaatst op 15 oktober 2010 - 16:19

Xymtrix zei:

Ik stem dan voor losstaande classes: Problem25.vb:
Visual Basic Code:
 Public Class Problem25

Public Function Solve() As Long

End Function

End Class


Met Long kom je niet weg. Sommige antwoorden hebben decimalen achter de komma. Misschien kan het wel met Decimal of Double maar met string weet je zeker dat het lukt. Het event OnDebugMessage() is misschien een tikkeltje overdreven ja, dus wellicht:

Visual Basic Code:
Interface IEulerProject
  Function Solve() As String
End Interface

Public Class Problem25
  Implements IEulerProject
  Public Function Solve() As String implements IEulerProject.Solve
	' ...
  End Function
End Class


Iemand (de topic starter?) moest maar eens de knoop doorhakken en dan kunnen we met z'n allen op dezelfde wijze doorgaan en zijn we onderling compatible.

#35 Vozzie

Vozzie

    Moderator

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

Geplaatst op 15 oktober 2010 - 16:31

Hallo,

@josk: we zijn ermee bezig. voor mij is alles goed, ik geef gewoon (teveel) input :P

Zal de interface niet in een library moeten komen waar we allen naar verwijzen? Dan kan één programma alle libraries met oplossingen laden. Een 2de interface met Factory Method kan dan wonderen doen, maar is misschien te complex.

Groeten

#36 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 07 apr 2020 23:55

Geplaatst op 16 oktober 2010 - 18:44

Eigenlijk stom. Ik was een half jaar geleden ofzoiets ook al een poosje aan het projecteuler-en geslagen maar heb de VB-oplossingen nooit bewaard :P

#37 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3612 berichten
    Laatst bezocht 01 mrt 2024 09:09
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 21 oktober 2010 - 15:29

josk79 zei:

Eigenlijk stom. Ik was een half jaar geleden ofzoiets ook al een poosje aan het projecteuler-en geslagen maar heb de VB-oplossingen nooit bewaard :P

Hoeveel had je er toen ? Ver geraakt ?

#38 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 07 apr 2020 23:55

Geplaatst op 21 oktober 2010 - 23:44

Valt wel mee hoor. Ik zit aan de 27 geloof ik

#39 Dominiek

Dominiek

    Senior Developer

  • Leden
  • PipPipPip
  • 120 berichten
    Laatst bezocht 11 mei 2016 14:42

Geplaatst op 03 december 2010 - 16:43

Citeren

Problem 52
It can be seen that the number, 125874, and its double, 251748, contain exactly the same digits, but in a different order.

Find the smallest positive integer, x, such that 2x, 3x, 4x, 5x, and 6x, contain the same digits.
Op een wel heel slechte manier opgelost, maar hier moest ik niet zo veel nadenken om de code te schrijven B)
De getallen zijn:
x:  142857
2x: 285714
3x: 428571
4x: 571428
5x: 714285
6x: 857142
- Wat me meteen opvalt, is dat dit om dezelfde getallen gaat als in hun voorbeeld. Toeval?
- Wat ook nog opvalt is dat als je 142857x7 doet je precies aan 999999 komt. Toeval?
- 4x, 5x, 6x was ook niet meer nodig, vanaf 3x kom je al aan 142857 uit. Toeval?
- Hun getal is ook het laagste dat bij verdubbeling uit dezelfde cijfers bestaat. Ook wel vreemd dat bij 3x, 4x, 5x, 6x erbij je een getal krijgt dat niet zoveel hoger is.

Visual Basic Code:
		Dim x As Long = 1
		Dim x2, x3, x4, x5, x6 As Long
		Dim ok As Boolean
		Do While ok = False
			Dim getal(0 To Len(x.ToString) - 1) As Integer
			For i As Integer = 0 To Len(x.ToString) - 1
				getal(i) = Mid(x, i + 1, 1)
			Next
			Array.Sort(getal)
			x2 = 2 * x
			Dim getal2(0 To Len(x2.ToString) - 1) As Integer
			For i As Integer = 0 To Len(x2.ToString) - 1
				getal2(i) = Mid(x2, i + 1, 1)
			Next
			Array.Sort(getal2)
			For i As Integer = 0 To Len(x.ToString) - 1
				If getal(i) <> getal2(i) Then
					ok = False
					Exit For
				Else
					ok = True
				End If
			Next
			If ok = True Then
				x3 = 3 * x
				Dim getal3(0 To Len(x3.ToString) - 1) As Integer
				For i As Integer = 0 To Len(x3.ToString) - 1
					getal3(i) = Mid(x3, i + 1, 1)
				Next
				Array.Sort(getal3)
				For i As Integer = 0 To Len(x.ToString) - 1
					If getal(i) <> getal3(i) Then
						ok = False
						Exit For
					Else
						ok = True
					End If
				Next
				If ok = True Then
					x4 = 4 * x
					Dim getal4(0 To Len(x4.ToString) - 1) As Integer
					For i As Integer = 0 To Len(x4.ToString) - 1
						getal4(i) = Mid(x4, i + 1, 1)
					Next
					Array.Sort(getal4)
					For i As Integer = 0 To Len(x.ToString) - 1
						If getal(i) <> getal4(i) Then
							ok = False
							Exit For
						Else
							ok = True
						End If
					Next
					If ok = True Then
						x5 = 5 * x
						Dim getal5(0 To Len(x5.ToString) - 1) As Integer
						For i As Integer = 0 To Len(x5.ToString) - 1
							getal5(i) = Mid(x5, i + 1, 1)
						Next
						Array.Sort(getal5)
						For i As Integer = 0 To Len(x.ToString) - 1
							If getal(i) <> getal5(i) Then
								ok = False
								Exit For
							Else
								ok = True
							End If
						Next
						If ok = True Then
							x6 = 6 * x
							Dim getal6(0 To Len(x6.ToString) - 1) As Integer
							For i As Integer = 0 To Len(x6.ToString) - 1
								getal6(i) = Mid(x6, i + 1, 1)
							Next
							Array.Sort(getal6)
							For i As Integer = 0 To Len(x.ToString) - 1
								If getal(i) <> getal6(i) Then
									ok = False
									Exit For
								Else
									ok = True
								End If
							Next
						End If
					End If
				End If
			End If
			If ok = True Then
				Label1.Text = x
				Label2.Text = x2
				Label3.Text = x3
				Label4.Text = x4
				Label5.Text = x5
				Label6.Text = x6
			End If
			x = x + 1
		Loop


#40 Vozzie

Vozzie

    Moderator

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

Geplaatst op 03 december 2010 - 17:09

Hallo,

@dominiek: Best een nieuwe topic aanmaken onder Project Euler antwoorden om nieuwe antwoorden te posten. Geef deze een titel "Problem ???"

Doch ligt alle actie omtrent "Project Euler" al een tijdje stil, zal die nu misschien eens heropleven,...

Groeten

#41 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 07 apr 2020 23:55

Geplaatst op 03 december 2010 - 22:15

Vozzie zei:

Doch ligt alle actie omtrent "Project Euler" al een tijdje stil, zal die nu misschien eens heropleven,...

B)

#42 Vozzie

Vozzie

    Moderator

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

Geplaatst op 06 december 2010 - 13:34

ik snap em niet ;), er waren toch wat mensen mee, en 't is toch uitgebloeid,...? 'k was een "problemcenter" aan't maken, maar ben gestopt en aan iets anders begonnen omdat er toch geen actie meer was,...

#43 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3612 berichten
    Laatst bezocht 01 mrt 2024 09:09
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 06 december 2010 - 18:32

Dat is geen reden om niet verder te doen Vozzie, misschien pringen er dan nog op de kar.

Misschien dat Xymtrix momenteel weiniger tijd heeft, examen, etc...

#44 Vozzie

Vozzie

    Moderator

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

Geplaatst op 06 december 2010 - 18:37

Hallo,

Der werd mij gezegd dat ik niet te rap moest gaan,... ik hield me in en iedereen stopte,...  ;) (denk ook met mijn weinig voorkennis wiskunde dat het in princiepe veel moeilijker is voor mij dan voor anderen,... ben tenslotte maar tot men 15 naar de dagschool geweest,...)

Ik heb geprobeerd een structuur te bespreken ivm die "problemcenter", maar daar kwam niet echt duidelijkheid in,...

lbnl: Ik heb ook niet altijd evenveel tijd om dingen op te lossen, ging normaal ook een jaartje minder actief zijn door avondschool, omdat ze me gevraagd hebben of ik eindelijk mijn eindwerk eens wil maken,... heb getwijfeld maar nu begin ik daar ook niet meer aan voor dit jaar,...

midlijf kriesies zeker  :)

Groetjes

#45 Xymtrix

Xymtrix

    Master Developer

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

Geplaatst op 07 december 2010 - 10:58

RedThread zei:

..
Misschien dat Xymtrix momenteel weiniger tijd heeft, examen, etc...
Examens heb ik gelukkig niet meer, werk full-time. We hebben alleen een nogal groot project op het werk die we voor 1 Januari af moeten hebben, waardoor ik niet zoveel tijd meer heb. En 's avonds ben ik druk bezig met ander dingen o.a. eigen website, minecraft etc. etc. Hopelijk heb ik in het nieuwe jaar meer tijd.

@Vozzie.. Structuur kunnen wel wel bespreken nog.. ;)

#46 Supervos

Supervos

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1424 berichten
    Laatst bezocht 12 feb 2023 12:37
  • LocatieBrugge

Geplaatst op 16 december 2010 - 21:30

Voor vraag 8 heb ik volgende code:

Visual Basic Code:
		Dim result As Long = 0

		Dim s As String = String.Join("", New String() {
				"73167176531330624919225119674426574742355349194934",
				"96983520312774506326239578318016984801869478851843",
				"85861560789112949495459501737958331952853208805511",
				"12540698747158523863050715693290963295227443043557",
				"66896648950445244523161731856403098711121722383113",
				"62229893423380308135336276614282806444486645238749",
				"30358907296290491560440772390713810515859307960866",
				"70172427121883998797908792274921901699720888093776",
				"65727333001053367881220235421809751254540594752243",
				"52584907711670556013604839586446706324415722155397",
				"53697817977846174064955149290862569321978468622482",
				"83972241375657056057490261407972968652414535100474",
				"82166370484403199890008895243450658541227588666881",
				"16427171479924442928230863465674813919123162824586",
				"17866458359124566529476545682848912883142607690042",
				"24219022671055626321111109370544217506941658960408",
				"07198403850962455444362981230987879927244284909188",
				"84580156166097919133875499200524063689912560717606",
				"05886116467109405077541002256983155200055935729725",
				"71636269561882670428252483600823257530420752963450"})

		For i As Integer = 0 To s.Length - 6
			result = Math.Max(result,
				(AscW(s(i)) xor 48) *
				(AscW(s(i + 1)) xor 48) *
				(AscW(s(i + 2)) xor 48) *
				(AscW(s(i + 3)) xor 48) *
				(AscW(s(i + 4)) xor 48)
				)
		Next

		Console.Write(result)
		Console.ReadKey()

Heb gebruik gemaakt van de ascii-tabel. ("0" = 110000, "9" = 111001, als je de eerste 11 ervan haalt (=48) heb je het basisgetal)
Volgens mij het het binair omvormen van je karakter sneller dan het parsen naar integer, ook omdat je zeker bent dat je karakter een numerieke waarde is.

#47 johanpotums

johanpotums

    Starting Developer

  • Leden
  • 5 berichten
    Laatst bezocht 18 feb 2012 13:44

Geplaatst op 11 februari 2012 - 01:23

Waw Supervos

ik heb je oplossing omgezet naar C# (wat ineens een vrij moeilijke opdracht bleek te zijn). Maar dat betekent nog steeds niet dat ik begrijp wat er aan de hand is. Zal ik een cursus booleaanse algebra ter hand nemen?

Code:
long result = 0;
string s = "73167176531330624919225119674426574742355349194934"+
"96983520312774506326239578318016984801869478851843"+
"85861560789112949495459501737958331952853208805511"+
"12540698747158523863050715693290963295227443043557"+
"66896648950445244523161731856403098711121722383113"+
"62229893423380308135336276614282806444486645238749"+
"30358907296290491560440772390713810515859307960866"+
"70172427121883998797908792274921901699720888093776"+
"65727333001053367881220235421809751254540594752243"+
"52584907711670556013604839586446706324415722155397"+
"53697817977846174064955149290862569321978468622482"+
"83972241375657056057490261407972968652414535100474"+
"82166370484403199890008895243450658541227588666881"+
"16427171479924442928230863465674813919123162824586"+
"17866458359124566529476545682848912883142607690042"+
"24219022671055626321111109370544217506941658960408"+
"07198403850962455444362981230987879927244284909188"+
"84580156166097919133875499200524063689912560717606"+
"05886116467109405077541002256983155200055935729725"+
"71636269561882670428252483600823257530420752963450";

for (int i = 0; i <= s.Length - 6; i++)
	result = Math.Max(result,
		  (Encoding.ASCII.GetBytes(s[i].ToString())[0] ^ byte.Parse("48")) *
			  (Encoding.ASCII.GetBytes(s[i+1].ToString())[0] ^ byte.Parse("48")) *
				  (Encoding.ASCII.GetBytes(s[i+2].ToString())[0] ^ byte.Parse("48")) *
					  (Encoding.ASCII.GetBytes(s[i+3].ToString())[0] ^ byte.Parse("48")) *
						  (Encoding.ASCII.GetBytes(s[i+4].ToString())[0] ^ byte.Parse("48"))
		  );
  
Console.Write(result);
Console.ReadKey();






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)