Family Day update
This commit is contained in:
parent
aac6731f2c
commit
9ad63ea473
2442 changed files with 39761 additions and 8255 deletions
37
Task/Gray-code/AWK/gray-code.awk
Normal file
37
Task/Gray-code/AWK/gray-code.awk
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Tested using GAWK
|
||||
|
||||
function bits2str(bits, data, mask)
|
||||
{
|
||||
# Source: https://www.gnu.org/software/gawk/manual/html_node/Bitwise-Functions.html
|
||||
if (bits == 0)
|
||||
return "0"
|
||||
|
||||
mask = 1
|
||||
for (; bits != 0; bits = rshift(bits, 1))
|
||||
data = (and(bits, mask) ? "1" : "0") data
|
||||
|
||||
while ((length(data) % 8) != 0)
|
||||
data = "0" data
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
function gray_encode(n){
|
||||
# Source: https://en.wikipedia.org/wiki/Gray_code#Converting_to_and_from_Gray_code
|
||||
return xor(n,rshift(n,1))
|
||||
}
|
||||
|
||||
function gray_decode(n){
|
||||
# Source: https://en.wikipedia.org/wiki/Gray_code#Converting_to_and_from_Gray_code
|
||||
mask = rshift(n,1)
|
||||
while(mask != 0){
|
||||
n = xor(n,mask)
|
||||
mask = rshift(mask,1)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
BEGIN{
|
||||
for (i=0; i < 32; i++)
|
||||
printf "%-3s => %05d => %05d => %05d\n",i, bits2str(i),bits2str(gray_encode(i)), bits2str(gray_decode(gray_encode(i)))
|
||||
}
|
||||
19
Task/Gray-code/Lobster/gray-code.lobster
Normal file
19
Task/Gray-code/Lobster/gray-code.lobster
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
def grey_encode(n) -> int:
|
||||
return n ^ (n >> 1)
|
||||
|
||||
def grey_decode(n) -> int:
|
||||
var p = n
|
||||
n = n >> 1
|
||||
while n != 0:
|
||||
p = p ^ n
|
||||
n = n >> 1
|
||||
return p
|
||||
|
||||
for(32) i:
|
||||
let g = grey_encode(i)
|
||||
let b = grey_decode(g)
|
||||
print(number_to_string(i, 10, 2) + " : " +
|
||||
number_to_string(i, 2, 5) + " ⇾ " +
|
||||
number_to_string(g, 2, 5) + " ⇾ " +
|
||||
number_to_string(b, 2, 5) + " : " +
|
||||
number_to_string(b, 10, 2))
|
||||
|
|
@ -15,7 +15,7 @@ Procedure.i gray_decode(g)
|
|||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
PrintN("Number Binary Gray Decoded")
|
||||
PrintN("Number Gray Binary Decoded")
|
||||
Define i, n
|
||||
For i = 0 To 31
|
||||
g = gray_encode(i)
|
||||
|
|
|
|||
22
Task/Gray-code/Swift/gray-code.swift
Normal file
22
Task/Gray-code/Swift/gray-code.swift
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
func grayEncode(_ i: Int) -> Int {
|
||||
return (i >> 1) ^ i
|
||||
}
|
||||
|
||||
func grayDecode(_ i: Int) -> Int {
|
||||
switch i {
|
||||
case 0:
|
||||
return 0
|
||||
case _:
|
||||
return i ^ grayDecode(i >> 1)
|
||||
}
|
||||
}
|
||||
|
||||
for i in 0..<32 {
|
||||
let iStr = String(i, radix: 2)
|
||||
let encode = grayEncode(i)
|
||||
let encodeStr = String(encode, radix: 2)
|
||||
let decode = grayDecode(encode)
|
||||
let decodeStr = String(decode, radix: 2)
|
||||
|
||||
print("\(i) (\(iStr)) => \(encode) (\(encodeStr)) => \(decode) (\(decodeStr))")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue