June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
42
Task/Run-length-encoding/BaCon/run-length-encoding.bacon
Normal file
42
Task/Run-length-encoding/BaCon/run-length-encoding.bacon
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
FUNCTION Rle_Encode$(txt$)
|
||||
|
||||
LOCAL result$, c$ = LEFT$(txt$, 1)
|
||||
LOCAL total = 1
|
||||
|
||||
FOR x = 2 TO LEN(txt$)
|
||||
IF c$ = MID$(txt$, x, 1) THEN
|
||||
INCR total
|
||||
ELSE
|
||||
result$ = result$ & STR$(total) & c$
|
||||
c$ = MID$(txt$, x, 1)
|
||||
total = 1
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
RETURN result$ & STR$(total) & c$
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION Rle_Decode$(txt$)
|
||||
|
||||
LOCAL nr$, result$
|
||||
|
||||
FOR x = 1 TO LEN(txt$)
|
||||
IF REGEX(MID$(txt$, x, 1), "[[:digit:]]") THEN
|
||||
nr$ = nr$ & MID$(txt$, x, 1)
|
||||
ELSE
|
||||
result$ = result$ & FILL$(VAL(nr$), ASC(MID$(txt$, x, 1)))
|
||||
nr$ = ""
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
RETURN result$
|
||||
|
||||
END FUNCTION
|
||||
|
||||
rle_data$ = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
||||
|
||||
PRINT "RLEData: ", rle_data$
|
||||
encoded$ = Rle_Encode$(rle_data$)
|
||||
PRINT "Encoded: ", encoded$
|
||||
PRINT "Decoded: ", Rle_Decode$(encoded$)
|
||||
31
Task/Run-length-encoding/Ceylon/run-length-encoding.ceylon
Normal file
31
Task/Run-length-encoding/Ceylon/run-length-encoding.ceylon
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
shared void run() {
|
||||
|
||||
"Takes a string such as aaaabbbbbbcc and returns 4a6b2c"
|
||||
String compress(String string) {
|
||||
if (exists firstChar = string.first) {
|
||||
if (exists index = string.firstIndexWhere((char) => char != firstChar)) {
|
||||
return "``index````firstChar````compress(string[index...])``";
|
||||
}
|
||||
else {
|
||||
return "``string.size````firstChar``";
|
||||
}
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
"Takes a string such as 4a6b2c and returns aaaabbbbbbcc"
|
||||
String decompress(String string) =>
|
||||
let (runs = string.split(Character.letter, false).paired)
|
||||
"".join {
|
||||
for ([length, char] in runs)
|
||||
if (is Integer int = Integer.parse(length))
|
||||
char.repeat(int)
|
||||
};
|
||||
|
||||
assert (compress("aaaabbbbbaa") == "4a5b2a");
|
||||
assert (decompress("4a6b2c") == "aaaabbbbbbcc");
|
||||
assert (compress("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW") == "12W1B12W3B24W1B14W");
|
||||
assert (decompress("24a") == "aaaaaaaaaaaaaaaaaaaaaaaa");
|
||||
}
|
||||
63
Task/Run-length-encoding/Elena/run-length-encoding.elena
Normal file
63
Task/Run-length-encoding/Elena/run-length-encoding.elena
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import system'text.
|
||||
import system'routines.
|
||||
import extensions.
|
||||
|
||||
singleton compressor
|
||||
{
|
||||
literal compress(literal s)
|
||||
[
|
||||
type<TextBuilder> tb := TextBuilder new.
|
||||
int count := 0.
|
||||
char current := s[0].
|
||||
s forEach(:ch)
|
||||
[
|
||||
if (ch == current)
|
||||
[
|
||||
count += 1
|
||||
];
|
||||
[
|
||||
tb writeFormatted("{0}{1}",count,current).
|
||||
count := 1.
|
||||
current := ch
|
||||
]
|
||||
].
|
||||
|
||||
tb writeFormatted("{0}{1}",count,current).
|
||||
|
||||
^ tb
|
||||
]
|
||||
|
||||
literal decompress(literal s)
|
||||
[
|
||||
type<TextBuilder> tb := TextBuilder new.
|
||||
char current := $0.
|
||||
var a := String new.
|
||||
s forEach(:ch)
|
||||
[
|
||||
current := ch.
|
||||
if (current isDigit)
|
||||
[
|
||||
a append(ch)
|
||||
];
|
||||
[
|
||||
int count := a toInt.
|
||||
a clear.
|
||||
|
||||
tb fill(current,count).
|
||||
]
|
||||
].
|
||||
|
||||
^ tb
|
||||
]
|
||||
}
|
||||
|
||||
program =
|
||||
[
|
||||
var s := "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW".
|
||||
|
||||
s := compressor compress(s).
|
||||
console printLine(s).
|
||||
|
||||
s := compressor decompress(s).
|
||||
console printLine(s).
|
||||
].
|
||||
18
Task/Run-length-encoding/Factor/run-length-encoding.factor
Normal file
18
Task/Run-length-encoding/Factor/run-length-encoding.factor
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
USING: io kernel literals math.parser math.ranges sequences
|
||||
sequences.extras sequences.repeating splitting.extras
|
||||
splitting.monotonic strings ;
|
||||
IN: rosetta-code.run-length-encoding
|
||||
|
||||
CONSTANT: alpha $[ CHAR: A CHAR: Z [a,b] >string ]
|
||||
|
||||
: encode ( str -- str )
|
||||
[ = ] monotonic-split [ [ length number>string ] [ first ]
|
||||
bi suffix ] map concat ;
|
||||
|
||||
: decode ( str -- str )
|
||||
alpha split* [ odd-indices ] [ even-indices
|
||||
[ string>number ] map ] bi [ repeat ] 2map concat ;
|
||||
|
||||
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
||||
"12W1B12W3B24W1B14W"
|
||||
[ encode ] [ decode ] bi* [ print ] bi@
|
||||
10
Task/Run-length-encoding/Julia/run-length-encoding.julia
Normal file
10
Task/Run-length-encoding/Julia/run-length-encoding.julia
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
using IterTools
|
||||
|
||||
encode(str::String) = collect((length(g), first(g)) for g in groupby(first, str))
|
||||
decode(cod::Vector) = join(repeat("$l", n) for (n, l) in cod)
|
||||
|
||||
for original in ["aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa", "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"]
|
||||
encoded = encode(original)
|
||||
decoded = decode(encoded)
|
||||
println("Original: $original\n -> encoded: $encoded\n -> decoded: $decoded")
|
||||
end
|
||||
|
|
@ -13,10 +13,13 @@ def encode(input_string):
|
|||
else:
|
||||
count += 1
|
||||
else:
|
||||
entry = (character,count)
|
||||
lst.append(entry)
|
||||
return lst
|
||||
|
||||
try:
|
||||
entry = (character,count)
|
||||
lst.append(entry)
|
||||
return (lst, 0)
|
||||
except Exception as e:
|
||||
print("Exception encountered {e}".format(e=e))
|
||||
return (e, 1)
|
||||
|
||||
def decode(lst):
|
||||
q = ""
|
||||
|
|
@ -25,5 +28,7 @@ def decode(lst):
|
|||
return q
|
||||
|
||||
#Method call
|
||||
encode("aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa")
|
||||
decode([('a', 5), ('h', 6), ('m', 7), ('u', 1), ('i', 7), ('a', 6)])
|
||||
value = encode("aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa")
|
||||
if value[1] == 0:
|
||||
print("Encoded value is {}".format(value[0]))
|
||||
decode(value[0])
|
||||
|
|
|
|||
30
Task/Run-length-encoding/Ring/run-length-encoding.ring
Normal file
30
Task/Run-length-encoding/Ring/run-length-encoding.ring
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Project : Run-length encoding
|
||||
# Date : 2017/12/04
|
||||
# Author : Gal Zsolt (~ CalmoSoft ~)
|
||||
# Email : <calmosoft@gmail.com>
|
||||
|
||||
load "stdlib.ring"
|
||||
test = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
||||
num = 0
|
||||
nr = 0
|
||||
decode = newlist(7,2)
|
||||
for n = 1 to len(test) - 1
|
||||
if test[n] = test[n+1]
|
||||
num = num + 1
|
||||
else
|
||||
nr = nr + 1
|
||||
decode[nr][1] = (num + 1)
|
||||
decode[nr][2] = test[n]
|
||||
see "" + (num + 1) + test[n]
|
||||
num = 0
|
||||
ok
|
||||
next
|
||||
see "" + (num + 1) + test[n]
|
||||
see nl
|
||||
nr = nr + 1
|
||||
decode[nr][1] = (num + 1)
|
||||
decode[nr][2] = test[n]
|
||||
for n = 1 to len(decode)
|
||||
dec = copy(decode[n][2], decode[n][1])
|
||||
see dec
|
||||
next
|
||||
37
Task/Run-length-encoding/VBA/run-length-encoding.vba
Normal file
37
Task/Run-length-encoding/VBA/run-length-encoding.vba
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
Option Explicit
|
||||
|
||||
Sub Main()
|
||||
Dim p As String
|
||||
p = length_encoding("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW")
|
||||
Debug.Print p
|
||||
Debug.Print length_decoding(p)
|
||||
End Sub
|
||||
|
||||
Private Function length_encoding(S As String) As String
|
||||
Dim F As String, r As String, a As String, n As Long, c As Long, k As Long
|
||||
r = Left(S, 1)
|
||||
c = 1
|
||||
For n = 2 To Len(S)
|
||||
If r <> Mid(S, n, 1) Then
|
||||
a = a & c & r
|
||||
r = Mid(S, n, 1)
|
||||
c = 1
|
||||
Else
|
||||
c = c + 1
|
||||
End If
|
||||
Next
|
||||
length_encoding = a & c & r
|
||||
End Function
|
||||
|
||||
Private Function length_decoding(S As String) As String
|
||||
Dim F As Long, r As String, a As String
|
||||
For F = 1 To Len(S)
|
||||
If IsNumeric(Mid(S, F, 1)) Then
|
||||
r = r & Mid(S, F, 1)
|
||||
Else
|
||||
a = a & String(CLng(r), Mid(S, F, 1))
|
||||
r = vbNullString
|
||||
End If
|
||||
Next
|
||||
length_decoding = a
|
||||
End Function
|
||||
Loading…
Add table
Add a link
Reference in a new issue