====== Huffmann ====== ===== - Variante Kompakt ===== /([^β(])(.*?)(β+)\1/$3$1$2/g Gleiche Zeichen summieren /(β+)(β+)([^β]+)\1([^β]+)/$1$4$1$2$3/g Sortierschritt /^(β+)([^β]+)(β+)([^β]+)/$1$3($2,$4)/g Kleinste Zusammenfassen /^β+([^β]+)$/$1/ ! Terminierung /(.)/β$1/g Einfügen von βs ===== - Tree Prüfen (separate aufgabe) ===== /[a-z]/ϖ/ /\(ϖ,ϖ\)/ϖ/ /^ϖ$/ok/! /.*/error/! ===== - Codes erzeugen ===== /\(([a-z01]*),([a-z01]*)\)/π$1τ$2/ /π([a-z])([01]*)/$10$2π/ /π?τ([a-z])([01]*)/$11$2τ/ /τ// ===== - Alles zusammen ===== /^([a-z])([01]+)([^β]*)χ([^θ]*)\1/$1$2$3χ$4$2/ /^([a-z])([01]+)// /^χ//! /\(([a-z01]*),([a-z01]*)\)/π$1τ$2/ /π([a-z])([01]*)/$10$2π/ /π?τ([a-z])([01]*)/$11$2τ/ /τ// /ϒ([a-z])/β$1ϒ/ /ϒ\n/χ/ /([^β(])(.*?)(β+)\1/$3$1$2/g /(β+)(β+)([^βχ]+)\1([^βχ]+)/$1$4$1$2$3/g /^(β+)([^βχ]+)(β+)([^βχ]+)/$1$3($2,$4)/g /^β*(.*)χ(.*)/$1χ$2θ$1/ /.*/ϒ$&\n$&/ ====== V2 ====== ===== - Vorgehensweise ===== Eingabe mississippi ==== - Initialisierung ==== /^[a-zA-Z ]*$/⇒$&\n⊕θ$&\n⇐$&/ ! /(\n|.)*/error/! ⇒mississippi ⊕θmississippi ⇐mississippi ==== - Codebaum==== Der Codebaum soll in folgenden Teilschritten erzeugt werden ; 0 Ausgangslage : ''⊕θmississippi'' ; 1 Zeichen Zählen : ''⊕mιiιιιιsιιιιpιιθ'' ; 2 Sortieren : ''⊕iιιιιsιιιιpιιmιθ'' ; 3 Letzte Zusammenfassen \\ Anschliessend zurück zu Schritt 2 : ''⊕iιιιιsιιιι(p,m)ιιιθ'' (3) : ''⊕iιιιι(s,(p,m))ιιιιιιιθ'' (3) : ''⊕(s,(p,m))ιιιιιιιiιιιιθ'' (2) : ''⊕(%%(s,(p,m)),i)ιιιιιιιιιιιθ%%'' (3) ; 4 Bereinigen : ''⊕(%%(s,(p,m)),i)%%'' /θ(.)/$1ιθ/ /([^ι)])(ι+)(.*)\1(ι+)/$1$2$4$3/g /([^⊕ι]+)(ι+)([^ι]+)\2(ι+)/$3$2$4$1$2/ /([^⊕ι]+)(ι+)([^ι]+)(ι+)θ/($1,$3)$2$4θ/ /ι+θ//! Zwischenstand /\((.*),(.*)\)/π$1τ$2/ /π([a-zA-Z ])([01]*)/$10$2π/ /π?τ([a-zA-Z ])([01]*)/$11$2τ/ /τ// /θ(.)/$1ιθ/ /([^ι)])(ι+)(.*)\1(ι+)/$1$2$4$3/g /([^⊕ι]+)(ι+)([^ι]+)\2(ι+)/$3$2$4$1$2/ /([^⊕ι]+)(ι+)([^ι]+)(ι+)θ/($1,$3)$2$4θ/ /ι+θ//! /^[a-zA-Z ]*$/⇒$&\n⊕θ$&\n⇐$&/ /(\n|.)*/error/! {{tag>markow huffmann}}