====== 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}}