Seite 1 von 2

P9: Primzahlen und andere ungenaue Informationen

Verfasst: 5. Jul 2007 19:40
von Wang Tang

Code: Alles auswählen

Your Hashtable has not the given initial size! Given initial size is already a prime number! Your HashtableSize is 2
Seh ich das richtig, dass der 2 nicht als Primzahl ansieht, @Veranstalter?

Code: Alles auswählen

Your hashtable accepts an initial tablesize lower than 1. This is forbidden, please throw an IllegalArgumentException.
Davon steht auch nichts in der Aufgabenstellung, solange die nächste Primzahl (in dem Fall 2) genommen wird, ist laut Spezifikation... nichts gesagt.

Verfasst: 5. Jul 2007 19:43
von HolgerF
Es sieht eher so aus, als würde er 1 als Primzahl ansehen?! Das wäre aber ein pöser Fehler auf Testerseite.

Verfasst: 5. Jul 2007 19:56
von Wang Tang
Stimmt HolgerF, so hat die Fehlermeldung mehr Sinn. Wär aber wie du schon bemerkt hast auch falsch.

Re: P9: Primzahlen und andere ungenaue Informationen

Verfasst: 5. Jul 2007 20:02
von R|ng0
Wang Tang hat geschrieben:

Code: Alles auswählen

Your Hashtable has not the given initial size! Given initial size is already a prime number! Your HashtableSize is 2
Seh ich das richtig, dass der 2 nicht als Primzahl ansieht, @Veranstalter?
Dieser Fehler kann auch an dir liegen.
Bsp:
initialSize = 11; // 11 ist Primzahl
//--> fehler in deiner Funktion --->
tabelSize = 2;

System.out.println("Your Hashtable has not the given initial size! Given initial size is already a prime number! Your HashtableSize is" + tableSize);

Das ergibt dann diese Fehlermeldung ohne, dass es gedacht hat, dass 2 keine ist!?

Wang Tang hat geschrieben:

Code: Alles auswählen

Your hashtable accepts an initial tablesize lower than 1. This is forbidden, please throw an IllegalArgumentException.
Davon steht auch nichts in der Aufgabenstellung, solange die nächste Primzahl (in dem Fall 2) genommen wird, ist laut Spezifikation... nichts gesagt.
Das hatte ich einen Tutor gefragt, der mich direkt zu C. Wach verwiesen hat, da er nicht weiß, was das Testsystem testet.



Aber die ganze Sache würde mich auch mal interessieren, da die Aufgabenstellung wirklich nicht so besonders klar definiert ist im Bezug auf die Definitionsbereiche.

Verfasst: 5. Jul 2007 20:04
von Hyst
naja der test heisst:
testInitializing01
gehe also stark davon aus, dass 01 als PRIMZAHL angesehen wird

(mal wieder) schlecht...

genauso wie: "key must be positive"
anscheinend wird die 0 als positiv gezählt.

Verfasst: 5. Jul 2007 20:12
von mcreichelt
Hiho,
Hyst hat geschrieben:naja der test heisst:
testInitializing01
gehe also stark davon aus, dass 01 als PRIMZAHL angesehen wird
allerdings - die 2 wird bei mir gleichfalls als Fehler erkannt. Wohl ein kleiner (aber blöder) Fehler im Testatsystem.
Hyst hat geschrieben:genauso wie: "key must be positive"
anscheinend wird die 0 als positiv gezählt.
Naja - 0 ist nicht-negativ, also ist sie positiv. Oder? ;-)


Grüße
Marc

Verfasst: 5. Jul 2007 20:13
von Wang Tang
@Ringo:
Dieser Fehler kann auch an dir liegen.
Bsp:
initialSize = 11; // 11 ist Primzahl
//--> fehler in deiner Funktion --->
tabelSize = 2;
Hab ich eigentlich gut geprüft, dürfte nicht daran liegen.

edit:
@Marc:
0 ist 0. Nicht positiv und nicht negativ. Dadrauf muss ich jetzt aber mal bestehen ;)

Verfasst: 5. Jul 2007 20:27
von Hyst
0 ist weder positiv noch negativ

oder so:
nicht negativ != positiv

Verfasst: 5. Jul 2007 20:43
von Martin K
Also ich muss mich jetzt doch mal ganz heftig und unfreundlich bei den Veranstaltern beschweren, zumindest bei denen, die für dieses Praktikum verantwortlich sind:
Wir sollen plötzlich Sachen machen, von denen kein Wörtchen in der Aufgabenstellung steht:
Testcase: testConstructor took 0,009 sec
FAILED
Your hashtable accepts an extensionFactor lower then 2. This is forbidden, please throw an IllegalArgumentException.
Sollen wir jetzt unser Praktikum nach felgeschlagenen Tests implementieren anstatt nach der Aufgabenstellung, nur weil die da ungenau ist?

Ein extensionFactor z.B. von 1 macht übrigens durchaus Sinn, wenn man beispielsweise die nächste HÖHERE Primzahl beim Vergrößern der HashTable sucht.
So habe ich es zumindest aus der Aufgabenstellung herausgelesen, aber auch das war sehr ungenau formuliert.
Aber darüber gibts hier glaub ich auch schon ne Diskussion...

//Edit:
Rechtschreibfehler korrigiert

Verfasst: 5. Jul 2007 20:54
von mnoll
Als Analogie... "Raten nach Testaten" :D. Bei mir schlägt der Test jedenfals auch fehl. Davon mal abgesehen ist für die Initialisierung nirgendwo die Rede, dass keine negativen Zahlen erlaubt wären. Schließlich suchen wir ja egal welche Übergabe die nächste Primzahl, und das geht bei allen negativen Zahlen genauso gut wie bei positiven.

Verfasst: 5. Jul 2007 20:56
von HolgerF
Wo wir übrigens grad beim Meckern über das Praktikum sind: Warum wurde eigentlich jetzt, beim letzten Praktikum, plötzlich die bestehende Praxis geändert und IllegalArgumentException bei Übergabe von null gefordert?

Verfasst: 5. Jul 2007 21:02
von Hyst
weil: inkonsistent

Verfasst: 5. Jul 2007 21:03
von mnoll
Naja da es eine Übergabe an eine Funktion ist, macht eine IllegalArgumentException schon mehr Sinn als eine NullPointerException. Da würde ich dem Praktikumsersteller Recht geben.

Verfasst: 5. Jul 2007 21:06
von X-Out
na ja findet ihr nicht auch, dass selbst die aufgaben in nem ganz andren stil formuliert wurden? ich vermute, dass diesmal jemand anderes für die aufgabenstellung verantwortlich ist.

aber andre frage, zur kollisionsfunktion:
kann es sein, dass sie nich viel sinn macht? sie liefert doch nur werte über key/primzahl, d.h. wenn ich im extremfall mit key/primzahl das letzte element in der liste bzw array erreiche, dass aber schon belegt ist -> er wird nie einen freien platz finden!?!?

solln wir dann praktisch von vorn losgehen oder hab ich da was falsch verstanden?

btw, hab den fehler mit der 2 natürlich auch...

-- zur kollisionsunktion - hab natürlich einen fehler bei der klammerung gemacht :( --

Verfasst: 5. Jul 2007 21:09
von HolgerF
Naja da es eine Übergabe an eine Funktion ist, macht eine IllegalArgumentException schon mehr Sinn als eine NullPointerException. Da würde ich dem Praktikumsersteller Recht geben.
Darüber kann man streiten. Ich finde eine NullPointerException klarer, weil sie unmittelbar darauf hinweist, was man gerade verbockt hat. IllegalArgument ist für mich eigentlich eher ein tatsächliches Argument, das benötigten Kriterien nicht entspricht (ich sehe in diesem Sinne die Eingabe von null eher als Nicht-Eingabe eines Arguments). In jedem Fall wäre die NullPointerException wieder implizit geworfen worden, was imho eleganter ist. Darüber hinaus war es bestehende Spruchpraxis, die so auf der allgemeinen Hinweisseite stand und steht. Es ist einfach unnötige, das im letzten Praktikum noch über den Haufen zu werfen.

(Aber ok, das mag Klugscheißerei sein, nicht so wichtig.)