[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] SF.net SVN: quarks:[1306] redSys



Revision: 1306
          http://quarks.svn.sourceforge.net/quarks/?rev=1306&view=rev
Author:   redFrik
Date:     2009-12-30 20:10:11 +0000 (Wed, 30 Dec 2009)

Log Message:
-----------
added RedLZ77 and a change to RedRLE

Modified Paths:
--------------
    redSys/RedSys.html
    redSys/redTools/RedBase64.html
    redSys/redTools/RedHuffman.html
    redSys/redTools/RedLZW.html
    redSys/redTools/RedRLE.html
    redSys/redTools/RedRLE.sc

Added Paths:
-----------
    redSys/redTools/RedLZ77.html
    redSys/redTools/RedLZ77.sc

Modified: redSys/RedSys.html
===================================================================
--- redSys/RedSys.html	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/RedSys.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -9,11 +9,11 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad1d13}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0019ba}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0d32ac}
 span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019ba}
+span.s2 {color: #0d32ac}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
 span.s5 {text-decoration: underline ; color: #001fe8}
@@ -96,6 +96,7 @@
 <p class="p1"><span class="s5"><a href="redTools/RedBase64.html">RedBase64</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-base64 encoding/decoding</p>
 <p class="p1"><span class="s5"><a href="redTools/RedHarmonicTree.html">RedHarmonicTree</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-sorted harmonic tree</p>
 <p class="p1"><span class="s5"><a href="redTools/RedHuffman.html">RedHuffman</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-huffman coding</p>
+<p class="p1"><span class="s5"><a href="redTools/RedLZ77.html">RedLZ77</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-lz77 compression/decompression</p>
 <p class="p1"><span class="s5"><a href="redTools/RedLZW.html">RedLZW</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-lzw compression/decompression</p>
 <p class="p1"><span class="s5"><a href="redTools/Redraw.html">Redraw</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-simple drawing with the mouse</p>
 <p class="p1"><span class="s5"><a href="redTools/RedRLE.html">RedRLE</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-run-length encoding/decodnig</p>
@@ -118,6 +119,9 @@
 <p class="p1"><span class="s5"><a href="redUGens/RedTapeRecorder.html">RedTapeRecorder</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-sampling and looping</p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
+<p class="p3">//--changes 091230:</p>
+<p class="p3">//added RedLZ77</p>
+<p class="p3">//modified RedRLE to take arrays instead of strings</p>
 <p class="p3">//--changes 091229:</p>
 <p class="p3">//added RedRLE</p>
 <p class="p3">//--changes 091226:</p>

Modified: redSys/redTools/RedBase64.html
===================================================================
--- redSys/redTools/RedBase64.html	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/redTools/RedBase64.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -9,23 +9,24 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #723b2a}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4f4236; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #723b2a; min-height: 12.0px}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #653f2e}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0022f8}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4b4238; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #653f2e; min-height: 12.0px}
 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #1142e6}
-span.s6 {color: #0030f2}
+span.s5 {text-decoration: underline ; color: #001fe8}
+span.s6 {color: #214fdb}
 span.s7 {color: #0022f8}
-span.s8 {color: #0000bf}
-span.s9 {color: #606060}
+span.s8 {color: #1142e6}
+span.s9 {color: #0000bf}
+span.s10 {color: #606060}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -34,7 +35,7 @@
 <p class="p2"><br></p>
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/Base64</span></p>
 <p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="RedLZW.html"><span class="s5">RedLZW</span></a></span><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></p>
+<p class="p4"><span class="s2">see also: <a href="RedLZ77.html"><span class="s5">RedLZ77</span></a> <a href="RedLZW.html"><span class="s5">RedLZW</span></a></span><span class="s6"> <a href="RedHuffman.html"><span class="s7">RedHuffman</span></a></span><span class="s8"> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></span></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*encode(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*decode(string)</b></p>
@@ -43,18 +44,18 @@
 <p class="p6"><br></p>
 <p class="p7">//--</p>
 <p class="p8"><span class="s2">a= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
-<p class="p9"><br></p>
-<p class="p10">b= <span class="s8">RedBase64</span>.encode(a);</p>
-<p class="p10"><span class="s8">RedBase64</span>.decode(b);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-0));</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-1));</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-2));</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-3));</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"leasure."</span>);</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"easure."</span>);</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"asure."</span>);</p>
-<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"sure."</span>);</p>
+<p class="p9">b= <span class="s9">RedBase64</span>.encode(a);</p>
+<p class="p9">c= <span class="s9">RedBase64</span>.decode(b);</p>
+<p class="p9">a==c</p>
+<p class="p10"><br></p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(a.keep(a.size-0));</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(a.keep(a.size-1));</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(a.keep(a.size-2));</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(a.keep(a.size-3));</p>
+<p class="p10"><br></p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(<span class="s10">"leasure."</span>);</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(<span class="s10">"easure."</span>);</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(<span class="s10">"asure."</span>);</p>
+<p class="p9"><span class="s9">RedBase64</span>.encode(<span class="s10">"sure."</span>);</p>
 </body>
 </html>

Modified: redSys/redTools/RedHuffman.html
===================================================================
--- redSys/redTools/RedHuffman.html	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/redTools/RedHuffman.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -9,21 +9,22 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #653f2e}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #574233}
 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4a4239; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #604030; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #47423b; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #544234; min-height: 12.0px}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13; min-height: 12.0px}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #0736dc}
-span.s6 {color: #0022f8}
-span.s7 {color: #0000bf}
+span.s5 {color: #1e49cd}
+span.s6 {color: #0030f2}
+span.s7 {color: #0019ba}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -33,7 +34,7 @@
 <p class="p1"><i>"to use fewer bits for more frequently occurring character"</i></p>
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//www.cs.duke.edu/csed/poop/huff/info/</span></p>
 <p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s4">RedBase64</span></a> <a href="RedLZW.html"><span class="s4">RedLZW</span></a></span><span class="s5"> <a href="RedRLE.html"><span class="s6">RedRLE</span></a></span></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s4">RedBase64</span></a> <a href="RedLZ77.html"><span class="s4">RedLZ77</span></a> <a href="RedLZW.html"><span class="s4">RedLZW</span></a></span><span class="s5"> <a href="RedRLE.html"><span class="s6">RedRLE</span></a></span></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*encode(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>encodes a string with ascii characters into a string with binary numbers.</p>
@@ -57,25 +58,26 @@
 <p class="p5"><br></p>
 <p class="p6"><br></p>
 <p class="p7">//--</p>
-<p class="p8"><span class="s2">a= </span><span class="s7">RedHuffman</span><span class="s2">.encode(</span>"streets are stone stars are not"<span class="s2">);</span></p>
-<p class="p9"><span class="s7">RedHuffman</span>.decode(a);</p>
+<p class="p8"><span class="s2">a= </span>"streets are stone stars are not"<span class="s2">;</span></p>
+<p class="p9">b= <span class="s7">RedHuffman</span>.encode(a);</p>
+<p class="p9">c= <span class="s7">RedHuffman</span>.decode(b);</p>
+<p class="p9">a==c</p>
 <p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p7">//--</p>
-<p class="p8"><span class="s2">a= </span><span class="s7">RedHuffman</span><span class="s2">.encode(</span>"go go gophers"<span class="s2">);</span></p>
+<p class="p11"><br></p>
+<p class="p8"><span class="s2">a= </span>"go go gophers"<span class="s2">;</span></p>
+<p class="p9">b= <span class="s7">RedHuffman</span>.encode(a);</p>
 <p class="p7"><span class="s7">RedHuffman</span><span class="s2">.tree;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current tree</p>
 <p class="p7"><span class="s7">RedHuffman</span><span class="s2">.dict;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current dict</p>
-<p class="p9"><span class="s7">RedHuffman</span>.decode(a);</p>
+<p class="p9">c= <span class="s7">RedHuffman</span>.decode(b);</p>
+<p class="p9">a==c</p>
 <p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p7">//--</p>
-<p class="p8"><span class="s2">b= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
-<p class="p9">a= <span class="s7">RedHuffman</span>.encode(b);</p>
-<p class="p10"><br></p>
-<p class="p9">c= <span class="s7">RedHuffman</span>.binaryStringToBytes(a);</p>
-<p class="p7"><span class="s2">c.size/b.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//53% smaller than the original</p>
-<p class="p10"><br></p>
+<p class="p11"><br></p>
+<p class="p8"><span class="s2">a= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
+<p class="p9">b= <span class="s7">RedHuffman</span>.encode(a);</p>
+<p class="p9">c= <span class="s7">RedHuffman</span>.binaryStringToBytes(b);</p>
+<p class="p7"><span class="s2">c.size/a.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//53% smaller than the original</p>
 <p class="p9">d= <span class="s7">RedHuffman</span>.bytesToBinaryString(c);</p>
-<p class="p9"><span class="s7">RedHuffman</span>.decode(d);</p>
+<p class="p9">e= <span class="s7">RedHuffman</span>.decode(d);</p>
+<p class="p9">e==a</p>
 </body>
 </html>

Added: redSys/redTools/RedLZ77.html
===================================================================
--- redSys/redTools/RedLZ77.html	                        (rev 0)
+++ redSys/redTools/RedLZ77.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<title></title>
+<meta name="Generator" content="Cocoa HTML Writer">
+<meta name="CocoaVersion" content="949.54">
+<style type="text/css">
+p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
+p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #6b3d2c}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1949e0}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902f20}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902f20; min-height: 12.0px}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b; min-height: 12.0px}
+span.s1 {font: 18.0px Helvetica}
+span.s2 {color: #000000}
+span.s3 {text-decoration: underline ; color: #000000}
+span.s4 {text-decoration: underline}
+span.s5 {text-decoration: underline ; color: #1744d2}
+span.s6 {color: #4a67bc}
+span.s7 {color: #1949e0}
+span.s8 {color: #4062c4}
+span.s9 {color: #3b5fc8}
+span.s10 {color: #062cb0}
+span.s11 {color: #902f20}
+span.s12 {color: #0024b5}
+span.s13 {color: #9d281b}
+span.Apple-tab-span {white-space:pre}
+</style>
+</head>
+<body>
+<p class="p1"><span class="s1"><b>RedLZ77</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lz77 compression/decompression</b></p>
+<p class="p2"><br></p>
+<p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//michael.dipperstein.com/lzss/</span></p>
+<p class="p3"><span class="s2">and </span><span class="s3">http:</span><span class="s4">//www.binaryessence.com/dct/en000138.htm</span></p>
+<p class="p2"><br></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s6"> <a href="RedHuffman.html"><span class="s7">RedHuffman</span></a></span><span class="s8"> <a href="RedLZW.html"><span class="s7">RedLZW</span></a></span><span class="s9"> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></span></p>
+<p class="p2"><br></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span>*compress(string)</b></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with distance, length, value...</p>
+<p class="p1"><b><span class="Apple-tab-span">	</span>*decompress(array)</b></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array</p>
+<p class="p1"><span class="Apple-tab-span">	</span><b>&lt;&gt;window</b></p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum sliding window size.<span class="Apple-converted-space">  </span>default= 4096</p>
+<p class="p1"><span class="Apple-tab-span">	</span><b>&lt;&gt;length</b></p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum length for matching pattern.<span class="Apple-converted-space">  </span>default= 16</p>
+<p class="p5"><br></p>
+<p class="p5"><br></p>
+<p class="p6">//--</p>
+<p class="p7"><span class="s2">a= </span>"AABCBBABC"<span class="s2">.ascii;</span></p>
+<p class="p8">b= <span class="s10">RedLZ77</span>.compress(a);</p>
+<p class="p8">c= <span class="s10">RedLZ77</span>.decompress(b);</p>
+<p class="p8">a==c</p>
+<p class="p5"><br></p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"abracadabra"<span class="s2">.ascii;</span></p>
+<p class="p8">b= <span class="s10">RedLZ77</span>.compress(a);</p>
+<p class="p8">c= <span class="s10">RedLZ77</span>.decompress(b);</p>
+<p class="p8">a==c</p>
+<p class="p5"><br></p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">.ascii;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s10">RedLZ77</span>.compress(a);</p>
+<p class="p8">b.size/a.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">//compressed 52%</span></p>
+<p class="p8">c= <span class="s10">RedLZ77</span>.decompress(b);</p>
+<p class="p8">c.size</p>
+<p class="p8">a==c</p>
+<p class="p5"><br></p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">.ascii;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s10">RedLZ77</span>.compress(a);</p>
+<p class="p8">b.size/a.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">//117%</span></p>
+<p class="p8">c= <span class="s10">RedLZ77</span>.decompress(b);</p>
+<p class="p8">c.collect{<span class="s10">|x|</span> x.asAscii}.join;</p>
+<p class="p8">c.size</p>
+<p class="p8">a==c</p>
+<p class="p5"><br></p>
+<p class="p10"><br></p>
+<p class="p8">a= {[0, 0, 0, 0.1].choose}.dup(5000);</p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s12">RedLZ77</span>.compress(a);</p>
+<p class="p8">b.size/a.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s13">//around 21%</span></p>
+<p class="p8">c= <span class="s12">RedLZ77</span>.decompress(b);</p>
+<p class="p8">c.size</p>
+<p class="p8">a==c</p>
+</body>
+</html>

Added: redSys/redTools/RedLZ77.sc
===================================================================
--- redSys/redTools/RedLZ77.sc	                        (rev 0)
+++ redSys/redTools/RedLZ77.sc	2009-12-30 20:10:11 UTC (rev 1306)
@@ -0,0 +1,49 @@
+//redFrik
+
+RedLZ77 {
+	classvar <>window= 4096, <>length= 16;
+	
+	*compress {|input|
+		var out= [], i= 0, match, len, j, sub, win;
+		while({i<input.size}, {
+			match= nil;
+			j= length-1;
+			while({match.isNil and:{j>=0}}, {
+				sub= input.copyRange(i, i+j);
+				j= j.min(sub.size-1);
+				win= input.copyRange((i-window+1).max(0), i-1);
+				match= win.find(sub);
+				j= j-1;
+			});
+			if(match.isNil, {
+				out= out++[0, 0, sub[0]];
+				i= i+1;
+			}, {
+				len= sub.size;
+				out= out++[i.min(window-1)-match-1, len];
+				if(i+len<input.size, {
+					out= out++input[i+len];
+				});
+				i= i+len+1;
+			});
+		});
+		^out;
+	}
+	*decompress {|input|
+		var out= [], i= 0, match, len;
+		while({i<input.size}, {
+			len= input[i+1];
+			if(len==0, {
+				out= out++input[i+2];
+			}, {
+				match= out.size-input[i]-1;
+				out= out++out.copyRange(match, match+len-1);
+				if(i+2<input.size, {
+					out= out++input[i+2];
+				});
+			});
+			i= i+3;
+		});
+		^out;
+	}
+}

Modified: redSys/redTools/RedLZW.html
===================================================================
--- redSys/redTools/RedLZW.html	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/redTools/RedLZW.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -9,21 +9,20 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #7a3827}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #1142e6}
-span.s6 {color: #0030f2}
-span.s7 {color: #0022f8}
-span.s8 {color: #0000bf}
+span.s5 {color: #1949e0}
+span.s6 {color: #0000ff}
+span.s7 {color: #083aec}
+span.s8 {color: #0019ba}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -33,7 +32,7 @@
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/LZW</span></p>
 <p class="p3"><span class="s2">and </span><span class="s3">http:</span><span class="s4">//marknelson.us/1989/10/01/lzw-data-compression/</span></p>
 <p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></p>
+<p class="p4"><span class="s2">see also: <a href="RedLZ77.html">RedLZ77</a> <a href="RedBase64.html">RedBase64</a></span><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span><span class="s7"> <a href="RedRLE.html"><span class="s6">RedRLE</span></a></span></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*compress(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with integers</p>
@@ -50,7 +49,7 @@
 <p class="p8">c= <span class="s8">RedLZW</span>.decompress(b);</p>
 <p class="p8">c.size;</p>
 <p class="p8">a==c;</p>
-<p class="p9"><br></p>
+<p class="p5"><br></p>
 <p class="p7"><span class="s2">a= </span>"/WED/WE/WEE/WEB/WET"<span class="s2">;</span></p>
 <p class="p8">a.size;</p>
 <p class="p8">b= <span class="s8">RedLZW</span>.compress(a);</p>
@@ -58,7 +57,7 @@
 <p class="p8">c= <span class="s8">RedLZW</span>.decompress(b);</p>
 <p class="p8">c.size;</p>
 <p class="p8">a==c;</p>
-<p class="p9"><br></p>
+<p class="p5"><br></p>
 <p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">;</span></p>
 <p class="p8">a.size;</p>
 <p class="p8">b= <span class="s8">RedLZW</span>.compress(a);</p>

Modified: redSys/redTools/RedRLE.html
===================================================================
--- redSys/redTools/RedRLE.html	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/redTools/RedRLE.html	2009-12-30 20:10:11 UTC (rev 1306)
@@ -9,21 +9,23 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #653f2e}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #083aec}
 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b}
 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b; min-height: 12.0px}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #002ce2}
-span.s6 {color: #355ccc}
-span.s7 {color: #0030f2}
-span.s8 {color: #2854d6}
-span.s9 {color: #0019ba}
+span.s5 {text-decoration: underline ; color: #0736dc}
+span.s6 {color: #4a67bc}
+span.s7 {color: #083aec}
+span.s8 {color: #4062c4}
+span.s9 {color: #0024b5}
+span.s10 {color: #9d281b}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -32,30 +34,39 @@
 <p class="p2"><br></p>
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/Run-length_encoding</span></p>
 <p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s6"> <a href="RedHuffman.html"><span class="s7">RedHuffman</span></a></span><span class="s8"> <a href="RedLZW.html"><span class="s7">RedLZW</span></a></span></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s6"> <a href="RedHuffman.html"><span class="s7">RedHuffman</span></a></span><span class="s8"> <a href="RedLZ77.html"><span class="s7">RedLZ77</span></a> <a href="RedLZW.html"><span class="s7">RedLZW</span></a></span></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*encode(array)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with length, value pairs integers</p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with length, value pairs.</p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*decode(array)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array must be length, value pairs integers</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a string</p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array must be length, value pairs.</p>
 <p class="p5"><br></p>
 <p class="p5"><br></p>
 <p class="p6">//--</p>
-<p class="p7"><span class="s2">a= </span>"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"<span class="s2">;</span></p>
+<p class="p7"><span class="s2">a= </span>"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"<span class="s2">.ascii;</span></p>
 <p class="p8">a.size;</p>
 <p class="p8">b= <span class="s9">RedRLE</span>.encode(a);</p>
-<p class="p8">b.size;</p>
+<p class="p8">b.size/a.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">//21% compressed</span></p>
 <p class="p8">c= <span class="s9">RedRLE</span>.decode(b);</p>
 <p class="p8">c.size;</p>
 <p class="p8">a==c;</p>
+<p class="p8">c.collect{<span class="s9">|x|</span> x.asAscii}.join;</p>
 <p class="p5"><br></p>
-<p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">;</span></p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">.ascii;</span></p>
 <p class="p8">a.size;</p>
 <p class="p8">b= <span class="s9">RedRLE</span>.encode(a);</p>
-<p class="p6"><span class="s2">b.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//performs really bad with non repeating data</p>
+<p class="p6"><span class="s2">b.size/c.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//167%<span class="Apple-converted-space">  </span>performs really bad with non repeating data</p>
 <p class="p8">c= <span class="s9">RedRLE</span>.decode(b);</p>
 <p class="p8">c.size;</p>
 <p class="p8">a==c;</p>
+<p class="p8">c.collect{<span class="s9">|x|</span> x.asAscii}.join;</p>
+<p class="p5"><br></p>
+<p class="p9"><br></p>
+<p class="p8">a= {[0, 0, 0, 0, 0, 0.5].choose}.dup(1000);</p>
+<p class="p8">b= <span class="s9">RedRLE</span>.encode(a);</p>
+<p class="p8">b.size/c.size;</p>
+<p class="p8">c= <span class="s9">RedRLE</span>.decode(b);</p>
+<p class="p8">a==c;</p>
 </body>
 </html>

Modified: redSys/redTools/RedRLE.sc
===================================================================
--- redSys/redTools/RedRLE.sc	2009-12-29 19:21:26 UTC (rev 1305)
+++ redSys/redTools/RedRLE.sc	2009-12-30 20:10:11 UTC (rev 1306)
@@ -2,25 +2,25 @@
 
 RedRLE {
 	*encode {|input|
-		var out= [], cnt, chr, i= 0;
+		var out= [], cnt, val, i= 0;
 		while({i<input.size}, {
 			cnt= 1;
-			chr= input[i];
-			while({i+1<input.size and:{input[i+1]==chr}}, {
+			val= input[i];
+			while({i+1<input.size and:{input[i+1]==val}}, {
 				cnt= cnt+1;
 				i= i+1;
 			});
-			out= out++cnt++chr.ascii;
+			out= out++cnt++val;
 			i= i+1;
 		});
 		^out;
 	}
 	*decode {|input|
-		var out= "", cnt, chr, i= 0;
+		var out= [], cnt, val, i= 0;
 		while({i<input.size}, {
 			cnt= input[i];
-			chr= input[i+1].asAscii;
-			out= out++chr.dup(cnt).join;
+			val= input[i+1];
+			out= out++val.dup(cnt);
 			i= i+2;
 		});
 		^out;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/