Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
66
Task/Run-length-encoding/Elena/run-length-encoding.elena
Normal file
66
Task/Run-length-encoding/Elena/run-length-encoding.elena
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import system'text;
|
||||
import system'routines;
|
||||
import extensions;
|
||||
import extensions'text;
|
||||
|
||||
singleton compressor
|
||||
{
|
||||
string compress(string s)
|
||||
{
|
||||
auto tb := new TextBuilder();
|
||||
int count := 0;
|
||||
char current := s[0];
|
||||
s.forEach:(ch)
|
||||
{
|
||||
if (ch == current)
|
||||
{
|
||||
count += 1
|
||||
}
|
||||
else
|
||||
{
|
||||
tb.writeFormatted("{0}{1}",count,current);
|
||||
count := 1;
|
||||
current := ch
|
||||
}
|
||||
};
|
||||
|
||||
tb.writeFormatted("{0}{1}",count,current);
|
||||
|
||||
^ tb
|
||||
}
|
||||
|
||||
string decompress(string s)
|
||||
{
|
||||
auto tb := new TextBuilder();
|
||||
char current := $0;
|
||||
var a := new StringWriter();
|
||||
s.forEach:(ch)
|
||||
{
|
||||
current := ch;
|
||||
if (current.isDigit())
|
||||
{
|
||||
a.append(ch)
|
||||
}
|
||||
else
|
||||
{
|
||||
int count := a.toInt();
|
||||
a.clear();
|
||||
|
||||
tb.fill(current,count)
|
||||
}
|
||||
};
|
||||
|
||||
^ tb
|
||||
}
|
||||
}
|
||||
|
||||
public program()
|
||||
{
|
||||
var s := "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
|
||||
s := compressor.compress(s);
|
||||
console.printLine(s);
|
||||
|
||||
s := compressor.decompress(s);
|
||||
console.printLine(s)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue