Praktikum7

Benutzeravatar
corn
Ehemalige Fachschaftler
Beiträge: 28
Registriert: 17. Okt 2004 19:08
Wohnort: Groß-Umstadt
Kontaktdaten:

Beitrag von corn »

funkyvonk hat geschrieben:Wenn ich eine Datei dekodiere, muss ich doch den BitString-Array vom HuffmanStreamReader erstellen lassen, oder?
Nein, du kannst natürlich auch auf den Reader verzichten, und die Daten selber aus der Datei auslesen... dann auch in dem Format deiner Wahl =)

7mSeni
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 185
Registriert: 4. Dez 2005 12:49

Beitrag von 7mSeni »

Genauso habe ich es auch gemacht. Faust compressed und decompressed. Beide dateien sind identisch, nur eben der TestMax lägt fehl.

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Wie hast du das Original mit deiner komprimiert-dekomprimierten Version verglichen? Dateigröße und stichprobenartig reingelesen, oder wirklich Byte für Byte mit einem Diff-Tool?

Ansonsten hab ich dazu leider spontan keine rechte Idee. Mir fällt gerade kein echter Randfall ein, der problematisch sein könnte...

7mSeni
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 185
Registriert: 4. Dez 2005 12:49

Beitrag von 7mSeni »

Ja, habe ein programm zum daten vergleich benutzt. habe auch andere Datein compressed und decompressed. sind alle gleich.

Ist wirklich komisch

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Wie gehst du denn bei der Dekomprimierung vor? Ich gehe ja mal davon aus, dass du den HuffmanStreamReader verwendest. Dann holst du als erstes die Codetabelle. Und dann? Überträgst du die in einen Huffman-Baum, an dem du dich entsprechend der Bits, die du einliest, entlanghangelst?

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

eventuell auch den faust so fünf bis zehn mal direkt hintereinander komprimieren und dekomprimieren, wenn man dann am ende irgendwie was vergisst oder so fällts auf ^^

7mSeni
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 185
Registriert: 4. Dez 2005 12:49

Beitrag von 7mSeni »

Also ich nutze den HuffmanStreamReader. Speichere mir die codetable.
Aus der codetable mache ich mir meinen baum. Für jedes codezeichen einen ast.
Dann lese ich die Bytes aus und lege sie in eine datenstruktur ab. Danach mache ich mir einen mega Bit string aus den ganzen eingelesenen bytes und arbeite das die Bitfolgen ab. Sobald ich an einem blatt des baums angekommen bin, schreibe ich den wert des blatts in die ausgabedatei...

ich seher gerade dass ich am ende das file nicht cloese. Vielleicht liegt es daran. Ich uppe es mal mit dem close. Werde morgen früh mal schauen, ob ich passed bin. Eigentlich kann es nur daran liegen, hoffentlich.


Gruss

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Klingt ein kleines bisschen umständlich (aber nicht falsch). HuffmanStreamReader hat eine Funktion readBit, die dir einfach das nächste Bit in der Datei liefert (von den komprimierten Daten). Du kannst also eigentlich immer deine aktuelle Position im Tree speichern, dann das nächste Bit einlesen und entsprechend die Position im Tree aktualisieren. Wenn du ein Blatt erreichst -> ausgeben und Position zurücksetzen.

Dass du die Eingabe nicht schließt, dürfte kaum das Problem sein, das betrifft eigentlich nur die Pufferung bei der Ausgabe, aber die bekommst du ja nur übergeben, über die besitzt du nicht die Hoheit und solltest sie also auch nicht schließen.

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

doch, in den (String, String)-Funktionen schon.. nur in den fällen (String, OutputStream) bzw (String, InputStream) nicht.

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Die String,String-Funktionen waren aber gegeben und dienen nur als bequemliche Testmethode für dich selbst. In den Kommentaren steht ausdrücklich, dass das Testsystem diese Methoden nicht verwendet.

Andreas T.
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 192
Registriert: 18. Okt 2006 00:18
Wohnort: Darmstadt

Beitrag von Andreas T. »

Bei mir schlägt ebenfalls testMax fehl. Ich gehe eigentlich genau wie hier beschrieben vor. Anhand meiner Testfälle lässt sich unmöglich der Fehler feststellen, die Dateien sind auch nach mehrmaligem Komprimieren / Dekomprimieren identisch (bzw. die MD5 Checksum ist dieselbe). Die (String, String) Methoden habe ich nicht verändert.

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

hm ich weiß nich, ich hab das ding eigentlich einfach runtergeschrieben und er hats genommen oO der testMax ist etwas umfangreicher, lief bei mir über 0,1 sekunden lang im testsystem, aber was er genau macht weiß ich auch nicht..

FloJ
Neuling
Neuling
Beiträge: 5
Registriert: 18. Okt 2005 13:08
Wohnort: Nauheim
Kontaktdaten:

Beitrag von FloJ »

Ich habe ein anderes Problem.

Habe jetzt bereits 4x hochgeladen und beim 1. 3. und 4. mal bekam ich immer:

Code: Alles auswählen

Error during unpacking and compiling your files
 Make sure you are uploading a jar containing your sources
- Use no external libraries.
- Avoid Umlaute. If you use them use ISO-8859-1 encoding
- Test your jar with our minimal testsuite
Beim zweiten hochladen gabs merkwürdigerweise keine Probleme.
Könnte es vielleicht noch an etwas dort nicht angegebenem liegen?

Hatte bisher bei keinem der vorherigen Praktika solche Probleme.

kechler
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 21. Nov 2004 22:33
Wohnort: Darmstadt

Beitrag von kechler »

So ein Problem hatte ich auch beim 6. Praktikum. Dazu kann ich dir die beiden folgenden Tipps geben, die bei mir damals geholfen haben:

1. Führe auf jeden Fall mal deine Dateien auf den Ultras mit dem "ant test" aus. Da bekommst du eine ausführlichere Fehlermeldung.

2. Vielleicht benutzt du einen cast, den du nicht machen darfst. Ich hatte im 6. von Vector auf List gecastet, was leider zu Fehlern geführt hatte.

Ich hoffe, dass ich damit helfen konnte...

wach
Computerversteher
Computerversteher
Beiträge: 323
Registriert: 25. Okt 2004 09:08

Beitrag von wach »

FloJ hat geschrieben: Beim zweiten hochladen gabs merkwürdigerweise keine Probleme.
Könnte es vielleicht noch an etwas dort nicht angegebenem liegen?
Standard Antwort 4: Was sagt denn die minimale Testumgebung dazu?

Antworten

Zurück zu „Archiv“