Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Run-length-encoding/C-sharp/run-length-encoding-1.cs
Normal file
37
Task/Run-length-encoding/C-sharp/run-length-encoding-1.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static System.Console;
|
||||
using static System.Linq.Enumerable;
|
||||
|
||||
namespace RunLengthEncoding
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static string Encode(string input) => input.Length ==0 ? "" : input.Skip(1)
|
||||
.Aggregate((t:input[0].ToString(),o:Empty<string>()),
|
||||
(a,c)=>a.t[0]==c ? (a.t+c,a.o) : (c.ToString(),a.o.Append(a.t)),
|
||||
a=>a.o.Append(a.t).Select(p => (key: p.Length, chr: p[0])))
|
||||
.Select(p=> $"{p.key}{p.chr}")
|
||||
.StringConcat();
|
||||
|
||||
public static string Decode(string input) => input
|
||||
.Aggregate((t: "", o: Empty<string>()), (a, c) => !char.IsDigit(c) ? ("", a.o.Append(a.t+c)) : (a.t + c,a.o)).o
|
||||
.Select(p => new string(p.Last(), int.Parse(string.Concat(p.Where(char.IsDigit)))))
|
||||
.StringConcat();
|
||||
|
||||
private static string StringConcat(this IEnumerable<string> seq) => string.Concat(seq);
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
const string raw = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
const string encoded = "12W1B12W3B24W1B14W";
|
||||
|
||||
WriteLine($"raw = {raw}");
|
||||
WriteLine($"encoded = {encoded}");
|
||||
WriteLine($"Encode(raw) = encoded = {Encode(raw)}");
|
||||
WriteLine($"Decode(encode) = {Decode(encoded)}");
|
||||
WriteLine($"Decode(Encode(raw)) = {Decode(Encode(raw)) == raw}");
|
||||
ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
30
Task/Run-length-encoding/C-sharp/run-length-encoding-2.cs
Normal file
30
Task/Run-length-encoding/C-sharp/run-length-encoding-2.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static System.Console;
|
||||
namespace RunLengthEncoding
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static string Encode(string input) => input.Length ==0 ? "" : input.Skip(1)
|
||||
.Aggregate((t:input[0].ToString(),o:Empty<string>()),
|
||||
(a,c)=>a.t[0]==c ? (a.t+c,a.o) : (c.ToString(),a.o.Append(a.t)),
|
||||
a=>a.o.Append(a.t).Select(p => (key: p.Length, chr: p[0])));
|
||||
|
||||
public static string Decode(IEnumerable<(int i , char c)> input) =>
|
||||
string.Concat(input.Select(t => new string(t.c, t.i)));
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
const string raw = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
var encoded = new[] { (12, 'W'), (1, 'B'), (12, 'W'), (3, 'B'), (24, 'W'), (1, 'B'), (14, 'W') };
|
||||
|
||||
WriteLine($"raw = {raw}");
|
||||
WriteLine($"Encode(raw) = encoded = {Encode(raw).TupleListToString()}");
|
||||
WriteLine($"Decode(encoded) = {Decode(encoded)}");
|
||||
WriteLine($"Decode(Encode(raw)) = {Decode(Encode(raw)) == raw}");
|
||||
ReadLine();
|
||||
}
|
||||
private static string TupleListToString(this IEnumerable<(int i, char c)> list) =>
|
||||
string.Join(",", list.Select(t => $"[{t.i},{t.c}]"));
|
||||
}
|
||||
}
|
||||
36
Task/Run-length-encoding/C-sharp/run-length-encoding-3.cs
Normal file
36
Task/Run-length-encoding/C-sharp/run-length-encoding-3.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static System.Console;
|
||||
using static System.Text;
|
||||
|
||||
namespace RunLengthEncoding
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static string Encode(string input) => input.Length == 0 ? "" : input.Skip(1)
|
||||
.Aggregate((len: 1, chr: input[0], sb: new StringBuilder()),
|
||||
(a, c) => a.chr == c ? (a.len + 1, a.chr, a.sb)
|
||||
: (1, c, a.sb.Append(a.len).Append(a.chr))),
|
||||
a => a.sb.Append(a.len).Append(a.chr)))
|
||||
.ToString();
|
||||
|
||||
public static string Decode(string input) => input
|
||||
.Aggregate((t: "", sb: new StringBuilder()),
|
||||
(a, c) => !char.IsDigit(c) ? ("", a.sb.Append(new string(c, int.Parse(a.t))))
|
||||
: (a.t + c, a.sb))
|
||||
.sb.ToString();
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
const string raw = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
const string encoded = "12W1B12W3B24W1B14W";
|
||||
|
||||
WriteLine($"raw = {raw}");
|
||||
WriteLine($"encoded = {encoded}");
|
||||
WriteLine($"Encode(raw) = encoded = {Encode(raw)}");
|
||||
WriteLine($"Decode(encode) = {Decode(encoded)}");
|
||||
WriteLine($"Decode(Encode(raw)) = {Decode(Encode(raw)) == raw}");
|
||||
ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
49
Task/Run-length-encoding/C-sharp/run-length-encoding-4.cs
Normal file
49
Task/Run-length-encoding/C-sharp/run-length-encoding-4.cs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
public static void Main(string[] args)
|
||||
{
|
||||
string input = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
Console.WriteLine(Encode(input));//Outputs: 12W1B12W3B24W1B14W
|
||||
Console.WriteLine(Decode(Encode(input)));//Outputs: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
|
||||
Console.ReadLine();
|
||||
}
|
||||
public static string Encode(string s)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int count = 1;
|
||||
char current =s[0];
|
||||
for(int i = 1; i < s.Length;i++)
|
||||
{
|
||||
if (current == s[i])
|
||||
{
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("{0}{1}", count, current);
|
||||
count = 1;
|
||||
current = s[i];
|
||||
}
|
||||
}
|
||||
sb.AppendFormat("{0}{1}", count, current);
|
||||
return sb.ToString();
|
||||
}
|
||||
public static string Decode(string s)
|
||||
{
|
||||
string a = "";
|
||||
int count = 0;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
char current = char.MinValue;
|
||||
for(int i = 0; i < s.Length; i++)
|
||||
{
|
||||
current = s[i];
|
||||
if (char.IsDigit(current))
|
||||
a += current;
|
||||
else
|
||||
{
|
||||
count = int.Parse(a);
|
||||
a = "";
|
||||
for (int j = 0; j < count; j++)
|
||||
sb.Append(current);
|
||||
}
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
37
Task/Run-length-encoding/C-sharp/run-length-encoding-5.cs
Normal file
37
Task/Run-length-encoding/C-sharp/run-length-encoding-5.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class Program
|
||||
{
|
||||
private delegate void fOk(bool ok, string message);
|
||||
|
||||
public static int Main(string[] args)
|
||||
{
|
||||
const string raw = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
const string code = "12W1B12W3B24W1B14W";
|
||||
|
||||
fOk Ok = delegate(bool ok, string message)
|
||||
{
|
||||
Console.WriteLine("{0}: {1}", ok ? "ok" : "not ok", message);
|
||||
};
|
||||
Ok(code.Equals(Encode(raw)), "Encode");
|
||||
Ok(raw.Equals(Decode(code)), "Decode");
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static string Encode(string input)
|
||||
{
|
||||
return Regex.Replace(input, @"(.)\1*", delegate(Match m)
|
||||
{
|
||||
return string.Concat(m.Value.Length, m.Groups[1].Value);
|
||||
});
|
||||
}
|
||||
|
||||
public static string Decode(string input)
|
||||
{
|
||||
return Regex.Replace(input, @"(\d+)(\D)", delegate(Match m)
|
||||
{
|
||||
return new string(m.Groups[2].Value[0], int.Parse(m.Groups[1].Value));
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue