September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
46
Task/Gray-code/Bc/gray-code.bc
Normal file
46
Task/Gray-code/Bc/gray-code.bc
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
scale = 0 /* to use integer division */
|
||||
|
||||
/* encode Gray code */
|
||||
define e(i) {
|
||||
auto h, r
|
||||
|
||||
if (i <= 0) return 0
|
||||
h = i / 2
|
||||
r = e(h) * 2 /* recurse */
|
||||
if (h % 2 != i % 2) r += 1 /* xor low bits of h, i */
|
||||
return r
|
||||
}
|
||||
|
||||
/* decode Gray code */
|
||||
define d(i) {
|
||||
auto h, r
|
||||
|
||||
if (i <= 0) return 0
|
||||
h = d(i / 2) /* recurse */
|
||||
r = h * 2
|
||||
if (h % 2 != i % 2) r += 1 /* xor low bits of h, i */
|
||||
return r
|
||||
}
|
||||
|
||||
|
||||
/* print i as 5 binary digits */
|
||||
define p(i) {
|
||||
auto d, d[]
|
||||
|
||||
for (d = 0; d <= 4; d++) {
|
||||
d[d] = i % 2
|
||||
i /= 2
|
||||
}
|
||||
for (d = 4; d >= 0; d--) {
|
||||
if(d[d] == 0) "0"
|
||||
if(d[d] == 1) "1"
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; i++) {
|
||||
/* original */ t = p(i); " => "
|
||||
/* encoded */ e = e(i); t = p(e); " => "
|
||||
/* decoded */ d = d(e); t = p(d); "
|
||||
"
|
||||
}
|
||||
quit
|
||||
Loading…
Add table
Add a link
Reference in a new issue