Entwicklung eines Pseudocodes zur Komprimierung von Bildatein

ComFreek

Mod | @comfreek
Moderator
Mir scheint, als ob du hier nach einer fertigen Lösung für deine Hausaufgabe suchst.

einfach nur crack hat dir sogar schon echten Code geschrieben. Diesen in Pseudocode umzuwandeln müsste viel leichter sein als andersherum.
Folgende Zeile müsstest du in einer weiteren Funktion umschreiben, da du keine regulären Ausdrücke verwenden darfst.
Javascript:
var groups = string.match( /([A-Z])\1*/g )
Sie findet alle Reihungen gleicher Buchstaben. Dafür musst du den aktuellen Buchstaben zwischenspeichern und bei jeder Iteration (über dem String) prüfen, ob der nächste Buchstabe noch gleich dem alten Buchstaben ist.
Hier der Code in JavaScript:
Javascript:
// str ist ein String
// str[i]: Zeichen i im String str
// []: ein leeres Array
// [x,y,z]: ein Array mit den Werten x, y, z
function blub(str) {
  var curChar, count = 0;
  var sequences = [];
  for (var i = 0; i < str.length; i++) {
    if (i == 0) {
      curChar = str[i];
    }
    if (curChar == str[i]) {
      count++;
    } else {
      sequences.push([curChar, count]);
      count = 1;
      curChar = str[i];
    }
  }
  sequences.push([curChar, count]);
  return sequences;
}

Jetzt musst du nur noch deine Terminologie benutzen (Bilddaten).
Eventuell kann du statt der Speicherung der Reihungen auch gleich in das Array für die komprimierten Daten schreiben.
 
Zuletzt bearbeitet:
Wie bekomme ich es hin das die Zeichenfolge so aussieht §4Q§3BAAW§6ANN§7F§2U ?
Habe mich an dem Code von einfach nur Crack und ComFreek gehalten
 

ComFreek

Mod | @comfreek
Moderator
Mein Code und der von einfach nur crack liefern doch genau das.
Weißt du, wie du ein '§' vor jeder komprimierten Reihung einfügst? Wenn nicht, dann wundere ich mich, ob du den restlichen Code verstanden hast.
 

Parantatatam

mag Cookies & Kekse
Hinweis: Ich musste in meinem Quelltext genau sechs Zeichen hinzufügen, wobei zwei Leerzeichen und noch einmal zwei Anführungszeichen waren.
 

Spyke

Premium-User
Mein Vorschlag wäre, programmier das einfach mal richtig aus, und versuch das dann mal als Pseudocode wieder zugeben.

Im Prinzip würd ich es selbst auch nicht anders machen, im Kopf hab ich den Code schon vor mir, und denn geb ich nur bissel verständlicher/vereinfacht nach außen.