abonnement Unibet Coolblue Bitvavo
pi_86444936
-edit: hihi grapje verkeerd gelezen ik dacht dat je 2 collections had :*-
pi_86445031
quote:
Op dinsdag 14 september 2010 23:05 schreef SinofEnvy het volgende:
-edit: hihi grapje verkeerd gelezen ik dacht dat je 2 collections had :*-
Ha, homo. :(
pi_86726084
quote:
Op dinsdag 14 september 2010 20:17 schreef robuust89 het volgende:
Help, ik kom er niet uit :{

Mijn huidige code ziet er zo uit:
[ code verwijderd ]

De grap is, ik moet het aantal dubbele waarden tellen en weergeven, want ik laat er een MainTest.java overheen gaan, en die zegt: FAILED, expected <5> but was <4>
Ik kan er gewoon met me kop niet bij hoe ik dat het beste kan aanpakken (chaos in het hoofd, jottem!)

code uit test file:
[ code verwijderd ]

Array initialisatie test file:
[ code verwijderd ]

Kan iemand hier een lichtje op schijnen? :)
Hmm... wellicht heb je je probleem zelf opgelost, maar bij deze toch nog mijn bijdrage :).

Jouw code telt het aantal paren i,j met i != j waarvoor geldt collection[i] == collection[j]. Als er nu n dezelfde getallen in het array zitten geeft dit een totale bijdrage van n*(n-1) aan je variable 'doubles'. Jouw methode kan dus zelfs een negatief getal teruggeven :).
Elk groepje van n wil je precies een keer tellen. Dat zou je bijvoorbeeld kunnen doen door alleen het eerst voorkomende element te tellen. In pseudo code
1
2
3
4
5
6
7
int unique = 0;
for ( int i = 0; i < collection.length; i++) {
  boolean isFirstElement = true;
  for ( int j = 0; j < i; j++) isFirstElement &= collection[j] != collection[i]
  if ( isFirstElement ) unique++;
}
return unique;
De benodigde rekentijd voor dit algoritme is O(n^2) (n = collection.length). Dit kun je verbeteren naar O(n*log(n)) door eerst te sorteren en dan het element met zijn voorganger vergelijken. Nog nerdier is om de waarden in een hashmap op te slaan als je over het array loopt. En als je geen flauw idee hebt waar het voorgaande gewauwel over gaat is het leuk om de verschillende algoritmen op een array van zo'n 100000 elementen toe te passen. Oh, en je kunt je er natuurlijk ook heel makkelijk van af maken door een ingebouwde java collectie te gebruiken: java.util.TreeSet.
pi_86727002
quote:
Als er nu n dezelfde getallen in het array zitten geeft dit een totale bijdrage van n*(n-1) aan je variable 'doubles'. Jouw methode kan dus zelfs een negatief getal teruggeven
Hoe dan :P?
pi_86731726
quote:
Op woensdag 22 september 2010 21:05 schreef Diabox het volgende:

[..]

Hoe dan :P?
Ah, ik zie dat ik iets te enthousiast ben geweest. De methode zelf zal niet zo snel een negatief getal terug geven, maar de volgende regel drukt wel iets negatiefs af als bijvoorbeeld de invoer 10 dezelfde getallen is (-80 als ik goed gerekend heb).
1System.out.println("Dus het aantal verschillende getallen zijn: " + (collection.length - doubles));
Het is wel mogelijk om integer overflow te krijgen. Als je n dezelfde getallen hebt, is het antwoord n*(n-1). Het grootste integer is iets van 2.18 miljard. Als je dus bijvoorbeeld n = 50000 kiest, ga je over die limiet heen.
pi_86742285
quote:
Op woensdag 22 september 2010 20:47 schreef Wolfje het volgende:

[..]

Hmm... wellicht heb je je probleem zelf opgelost, maar bij deze toch nog mijn bijdrage :).

Jouw code telt het aantal paren i,j met i != j waarvoor geldt collection[i] == collection[j]. Als er nu n dezelfde getallen in het array zitten geeft dit een totale bijdrage van n*(n-1) aan je variable 'doubles'. Jouw methode kan dus zelfs een negatief getal teruggeven :).
Elk groepje van n wil je precies een keer tellen. Dat zou je bijvoorbeeld kunnen doen door alleen het eerst voorkomende element te tellen. In pseudo code
[ code verwijderd ]

De benodigde rekentijd voor dit algoritme is O(n^2) (n = collection.length). Dit kun je verbeteren naar O(n*log(n)) door eerst te sorteren en dan het element met zijn voorganger vergelijken. Nog nerdier is om de waarden in een hashmap op te slaan als je over het array loopt. En als je geen flauw idee hebt waar het voorgaande gewauwel over gaat is het leuk om de verschillende algoritmen op een array van zo'n 100000 elementen toe te passen. Oh, en je kunt je er natuurlijk ook heel makkelijk van af maken door een ingebouwde java collectie te gebruiken: java.util.TreeSet.
Held! Ik ben je eeuwig dankbaar _O_ :P Ik had idd lopen kutten met de hashmap, maar dat ging helemaal niet :')
Hoi, ik ben robuust89 en ik ben nieuw!
  donderdag 21 oktober 2010 @ 14:26:13 #107
118585 Crutch
Filantroop || Taalzwengel
pi_87792857
Ik snap er niks van; ik kan geen JDK voor Mac vinden. :?

Heb Netbeans geinstalleerd maar vindt de libraries niet.
Je moeder is een hamster
  donderdag 21 oktober 2010 @ 15:06:41 #108
118585 Crutch
Filantroop || Taalzwengel
pi_87794351
Nevermind, hij vond de Javadocs niet, die kon ik natuurlijk gewoon daownloaden bij Sun. :')
Je moeder is een hamster
pi_88146144
Wat is de grootste Variabele die je kan gebruiken voor getallen? de allergrootste?
ik zoek namelijk een manier om een gigantisch groot getal uit te rekenen :).
iemand tips ^^?

met double kreeg ik al bij de 2e poging;

Programma gestart.
Graham deel:0 :4
Graham deel:1 :4.434264882430415E38
Graham deel:2 :Infinity

ja ik wou eens kijken of ik het getal graham kon uitrekenen, daarvoor heb je toch computers ;)?
Redacted
pi_88147589
quote:
1s.gif Op zaterdag 30 oktober 2010 17:48 schreef cablegunmaster het volgende:
Wat is de grootste Variabele die je kan gebruiken voor getallen? de allergrootste?
ik zoek namelijk een manier om een gigantisch groot getal uit te rekenen :).
iemand tips ^^?

met double kreeg ik al bij de 2e poging;

Programma gestart.
Graham deel:0 :4
Graham deel:1 :4.434264882430415E38
Graham deel:2 :Infinity

ja ik wou eens kijken of ik het getal graham kon uitrekenen, daarvoor heb je toch computers ;)?
Toevallig zat ik daar laatst ook eens aan te denken. Het moet mogelijk zijn om dmv klassen zelf zo'n ding te maken. Ik vraag me alleen af of het dan mogelijk is om een heel groot getal toe te wijzen aan zo'n object/struct. Volgens mij als je de operator = gebruikt, converteert de compiler het getal rechts van = eerst naar een int ofzo, en daarvoor is het dus te groot.
Finally, someone let me out of my cage
pi_88147766
quote:
1s.gif Op zaterdag 30 oktober 2010 18:40 schreef minibeer het volgende:

[..]

Toevallig zat ik daar laatst ook eens aan te denken. Het moet mogelijk zijn om dmv klassen zelf zo'n ding te maken. Ik vraag me alleen af of het dan mogelijk is om een heel groot getal toe te wijzen aan zo'n object/struct. Volgens mij als je de operator = gebruikt, converteert de compiler het getal rechts van = eerst naar een int ofzo, en daarvoor is het dus te groot.
welke programmeer code gebruik jij? toch hopelijk niet PHP?
want Java kan je doubles en andere ongein gebruiken als je het maar google :). voor gebruikt.
van te voren aan geven wat alles is.

zit nu alleen met het probleem dat ik geen machten meer kan gebruiken :') en dus mijn eigen macht methode moet schrijven die redelijk omslachtig is.

ik mag ook geen While gebruiken omdat het formaat dat ik gebruik het niet toestaat :')!
terug transformeren naar int zal mijn getal verneuken. :( dus iemand een oplossing :)?

[ Bericht 15% gewijzigd door cablegunmaster op 30-10-2010 19:19:02 ]
Redacted
pi_88149140
quote:
1s.gif Op zaterdag 30 oktober 2010 18:45 schreef cablegunmaster het volgende:[/b]

[..]



welke programmeer code gebruik jij? toch hopelijk niet PHP?
want Java kan je doubles en andere ongein gebruiken als je het maar google :). voor gebruikt.
van te voren aan geven wat alles is.

zit nu alleen met het probleem dat ik geen machten meer kan gebruiken :') en dus mijn eigen macht methode moet schrijven die redelijk omslachtig is.

ik mag ook geen While gebruiken omdat het formaat dat ik gebruik het niet toestaat :')!
terug transformeren naar int zal mijn getal verneuken. :( dus iemand een oplossing :)?
ik gebruik c# nu, maar dat maakt volgens mij niet zoveel uit
in mijn geval wilde ik een klasse hebben voor hele getallen, en volgens mij wordt (ook in java) een getal dat geen punt bevat automatisch geconverteerd naar een int.
ik wil dus eigenlijk een klasse die zo werkt:
1
2
Grootgetal g;
g = 13524653638638024590356899;
maar dat kan dus geloof ik niet omdat het getal rechts dan te groot is om naar een int te converteren.
Finally, someone let me out of my cage
pi_88150091
quote:
1s.gif Op zaterdag 30 oktober 2010 19:30 schreef minibeer het volgende:

[..]

ik gebruik c# nu, maar dat maakt volgens mij niet zoveel uit
in mijn geval wilde ik een klasse hebben voor hele getallen, en volgens mij wordt (ook in java) een getal dat geen punt bevat automatisch geconverteerd naar een int.
ik wil dus eigenlijk een klasse die zo werkt:
[ code verwijderd ]

maar dat kan dus geloof ik niet omdat het getal rechts dan te groot is om naar een int te converteren.
in java had ik er 1 die heette BigDecimal kon heerlijk grootte getallen bevatten alleen toen raakte ik mijn while kwijt. en nu zit ik verhoop dat te implementeren. krijg nu heerlijk een fout terwijl ik weet dat ik het goed doe (zal ook wel niet pc heeft gelijk ) . doe ik het toch fout :).
Redacted
pi_88152209
quote:
1s.gif Op zaterdag 30 oktober 2010 19:30 schreef minibeer het volgende:

[..]

ik gebruik c# nu, maar dat maakt volgens mij niet zoveel uit
in mijn geval wilde ik een klasse hebben voor hele getallen, en volgens mij wordt (ook in java) een getal dat geen punt bevat automatisch geconverteerd naar een int.
ik wil dus eigenlijk een klasse die zo werkt:
[ code verwijderd ]

maar dat kan dus geloof ik niet omdat het getal rechts dan te groot is om naar een int te converteren.
het probleem bij mij is dat het getal niet uit te berekenen valt omdat mijn pc niet meer geheugen heeft _O-
Redacted
pi_88168953
quote:
1s.gif Op zaterdag 30 oktober 2010 18:45 schreef cablegunmaster het volgende:

[..]



welke programmeer code gebruik jij? toch hopelijk niet PHP?
want Java kan je doubles en andere ongein gebruiken als je het maar google :). voor gebruikt.
van te voren aan geven wat alles is.

zit nu alleen met het probleem dat ik geen machten meer kan gebruiken :') en dus mijn eigen macht methode moet schrijven die redelijk omslachtig is.

ik mag ook geen While gebruiken omdat het formaat dat ik gebruik het niet toestaat :')!
terug transformeren naar int zal mijn getal verneuken. :( dus iemand een oplossing :)?
In java heb je de klassen BigInteger en BigDecimal (in java.math) die allebei ook de macht van het getal kunnen uitrekenen (pow). Op wikipedia heb ik even gekeken naar dat Graham getal en het blijkt dat dat getal bijzonder hard zijn best doet om heel snel ontzettend groot te worden. Ik ben dus ook niet zo verbaasd dat zelfs een computer je hierbij niet echt kan helpen :).
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')