1114 | dekomp | Das Runlength Verfahren (dekomprimieren) | ||||||||
| ||||||||||
Abzugebende Files: dekomp.txt, dekomp.java |
Diese Codierung funktioniert wie folgt: Zeichen, die im String wiederholt vorkommen, werden durch eine nachgestellte Ziffer "vervielfacht". Dazu wird zwischen zwei "Betriebsarten" unterschieden:
Im Singlemodus werden die Zeichen so übernommen, wie sie im Eingabestring stehen; im Multimodus hingegen durch das Nachstellen einer Ziffer, die die Häufigkeit angibt, vervielfacht. Der Übergang zwischen Single- und Multimodus wird durch das Trennzeichen ' (einfaches Hochkomma) markiert; wenn dieses Zeichen im Eingabestring vorkommt, so wird dies durch Verdoppelung '' (zwei einfache Hochkomma hintereinander) dargestellt.
Am Anfang jedes Datensatzes ist das Programm im Singlemodus; der Multimodus
wird nur verwendet, wenn tatsächlich mehrere gleiche Zeichen hintereinanderauftreten. Wenn mehrere Gruppen gleicher Zeichen unmittelbar aufeinanderfolgen, so wird nur einmal in den Multimodus umgeschalten und erst beim
nächsten "Einzelgänger" zurückgeschalten.
Die einzelnen Stringzeichen darf keine Ziffern enthalten, da diese dieses einfache Verfahren der Kodierung stören.
Sind die eingegebenen Daten nicht korrekt (z.B. nicht entschlüsselbar) oder erfüllen nicht die
Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Eingabedaten |
a'b3'ab
abcde |
Ausgabedaten |
abbbab
abcde |
Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:
java dekomp < dekomp.i1 > dekomp.out1
Das erzeugte File dekomp.out1 können Sie dann mit dem mitgelieferten Outputfile dekomp.o1 vergleichen.