Jump to content

Gray code: Difference between revisions

Added Batch File; made output size consistent
(Added Batch File; made output size consistent)
Line 206:
Check compactness of assembly code generated by GNAT :http://pastebin.com/qtNjeQk9<br>
{{out}}
<pre style="overflow: auto; height: 5em20em;">Num Binary Gray decoded
0: 2#0# => 2#0# => 0
1: 2#1# => 2#1# => 1
Line 374:
({(0,⍵)⍪1,⊖⍵}⍣N)(1 0⍴⍬)</lang>
{{out}}
<pre style="overflow: auto; height: 5em20em;">0 0 0 0 0
0 0 0 0 1
0 0 0 1 1
Line 441:
MsgBox % clipboard := out</lang>
{{out}}
<pre style="heightoverflow:30ex auto;overflow height:scroll 20em;">0 : 00000 => 00000 => 00000 => 00000
1 : 00001 => 00001 => 00001 => 00001
2 : 00010 => 00011 => 00010 => 00010
Line 545:
30 => 11110 => 10001 => 11110
31 => 11111 => 10000 => 11111</pre>
 
=={{header|Batch File}}==
<lang dos>:: Gray Code Task from Rosetta Code
:: Batch File Implementation
 
@echo off
rem -------------- define batch file macros with parameters appended
rem more info: https://www.dostips.com/forum/viewtopic.php?f=3&t=2518
setlocal disabledelayedexpansion % == required for macro ==%
(set \n=^^^
%== this creates escaped line feed for macro ==%
)
 
rem convert to binary (unsigned)
rem argument: natnum bitlength outputvar
rem note: if natnum is negative, then !outputvar! is empty
set tobinary=for %%# in (1 2) do if %%#==2 ( %\n%
for /f "tokens=1,2,3" %%a in ("!args!") do (set "natnum=%%a"^&set "bitlength=%%b"^&set "outputvar=%%c") %\n%
set "!outputvar!=" %\n%
if !natnum! geq 0 ( %\n%
set "currnum=!natnum!" %\n%
for /l %%m in (1,1,!bitlength!) do ( %\n%
set /a "bit=!currnum!%%2" %\n%
for %%v in (!outputvar!) do set "!outputvar!=!bit!!%%v!" %\n%
set /a "currnum/=2" %\n%
) %\n%
) %\n%
) else set args=
 
rem gray code encoder up to bit #(!bitlength!-1)
rem argument: binary bitlength outputvar
rem note: MSB is bit #0
set encoder=for %%# in (1 2) do if %%#==2 ( %\n%
for /f "tokens=1,2,3" %%a in ("!args!") do (set "binary=%%a"^&set "bitlength=%%b"^&set "outputvar=%%c") %\n%
if "!binary!" neq "" ( %\n%
set "!outputvar!=!binary:~0,1!" %\n%
set /a "lastidx=!bitlength!-1" %\n%
for /l %%m in (1,1,!lastidx!) do ( %\n%
set /a "previdx=%%m-1" %\n%
for %%x in (!previdx!) do set /a "newbit=!binary:~%%m,1!^^!binary:~%%x,1!" %\n%
for %%v in (!outputvar!) do set "!outputvar!=!%%v!!newbit!" %\n%
) %\n%
) %\n%
) else set args=
 
rem gray code decoder up to bit #(!bitlength!-1)
rem argument: gray bitlength outputvar
rem note: MSB is bit #0
set decoder=for %%# in (1 2) do if %%#==2 ( %\n%
for /f "tokens=1,2,3" %%a in ("!args!") do (set "gray=%%a"^&set "bitlength=%%b"^&set "outputvar=%%c") %\n%
if "!gray!" neq "" ( %\n%
set "!outputvar!=!gray:~0,1!" %\n%
set /a "lastidx=!bitlength!-1" %\n%
for /l %%m in (1,1,!lastidx!) do ( %\n%
set /a "previdx=%%m-1" %\n%
for /f "tokens=1,2" %%x in ("!previdx! !outputvar!") do set /a "newbit=!gray:~%%m,1!^^!%%y:~%%x,1!" %\n%
for %%v in (!outputvar!) do set "!outputvar!=!%%v!!newbit!" %\n%
) %\n%
) %\n%
) else set args=
 
rem -------------- main thing
setlocal enabledelayedexpansion
echo(# -^> bin -^> enc -^> dec
for /l %%n in (0,1,31) do (
%tobinary% %%n 5 bin
%encoder% !bin! 5 enc
%decoder% !enc! 5 dec
echo(%%n -^> !bin! -^> !enc! -^> !dec!
)
exit /b 0</lang>
{{Out}}
<pre style="overflow: auto; height: 20em;"># -> bin -> enc -> dec
0 -> 00000 -> 00000 -> 00000
1 -> 00001 -> 00001 -> 00001
2 -> 00010 -> 00011 -> 00010
3 -> 00011 -> 00010 -> 00011
4 -> 00100 -> 00110 -> 00100
5 -> 00101 -> 00111 -> 00101
6 -> 00110 -> 00101 -> 00110
7 -> 00111 -> 00100 -> 00111
8 -> 01000 -> 01100 -> 01000
9 -> 01001 -> 01101 -> 01001
10 -> 01010 -> 01111 -> 01010
11 -> 01011 -> 01110 -> 01011
12 -> 01100 -> 01010 -> 01100
13 -> 01101 -> 01011 -> 01101
14 -> 01110 -> 01001 -> 01110
15 -> 01111 -> 01000 -> 01111
16 -> 10000 -> 11000 -> 10000
17 -> 10001 -> 11001 -> 10001
18 -> 10010 -> 11011 -> 10010
19 -> 10011 -> 11010 -> 10011
20 -> 10100 -> 11110 -> 10100
21 -> 10101 -> 11111 -> 10101
22 -> 10110 -> 11101 -> 10110
23 -> 10111 -> 11100 -> 10111
24 -> 11000 -> 10100 -> 11000
25 -> 11001 -> 10101 -> 11001
26 -> 11010 -> 10111 -> 11010
27 -> 11011 -> 10110 -> 11011
28 -> 11100 -> 10010 -> 11100
29 -> 11101 -> 10011 -> 11101
30 -> 11110 -> 10001 -> 11110
31 -> 11111 -> 10000 -> 11111</pre>
 
=={{header|BBC BASIC}}==
Line 615 ⟶ 720:
 
{{out}}
<pre style="overflow: auto; height: 5em20em;">00000 => 00000 => 00000
00001 => 00001 => 00001
00010 => 00011 => 00010
Line 1,888 ⟶ 1,993:
 
Results:
<pre style="overflow: auto; height: 5em20em;">number binary gray code decode
====== ====== ========= ======
0 00000 00000 0
Line 2,277 ⟶ 2,382:
 
{{out}}
<lang Kpre> 0 : 00000 -> 00000 -> 00000 : 0
1 : 00001 -> 00001 -> 00001 : 1
2 : 00010 -> 00011 -> 00010 : 2
Line 2,308 ⟶ 2,413:
29 : 11101 -> 10011 -> 11101 : 29
30 : 11110 -> 10001 -> 11110 : 30
31 : 11111 -> 10000 -> 11111 : 31</langpre>
 
=={{header|Kotlin}}==
Line 2,818 ⟶ 2,923:
</lang>
{{out}}
<pre style="heightoverflow:30ex auto;overflow height:scroll 20em;">
0 0 0 0 0
1 1 1 1 1
Line 2,919 ⟶ 3,024:
 
{{out}}
<pre style="overflow: auto; height: 5em20em;">
Enter the number of bits: 5
Gray code of 5 bits
Line 3,849 ⟶ 3,954:
</lang>
{{out}}
<pre style="overflow: auto; height: 7em20em;">> (show-table)
01 | 00001 | 00001
02 | 00011 | 00010
Line 4,109 ⟶ 4,214:
end</lang>
{{out}}
<pre style="heightoverflow:52ex auto;overflow height:scroll 20em;">
0 : 0 => 0 => 0 : 0
1 : 1 => 1 => 1 : 1
Line 4,177 ⟶ 4,282:
</lang>
{{out}}
<pre style="overflow: auto; height: 7em20em;">decimal binary gray decoded
0 0 0 0
1 1 1 1
Line 4,238 ⟶ 4,343:
}</lang>
{{out}}
<pre style="overflow: auto; height: 7em20em;">decimal binary gray decoded
0 00000 00000 0
1 00001 00001 1
Line 4,387 ⟶ 4,492:
 
{{out}}
<pre style="overflow: auto; height: 7em20em;">binary => gray => decoded
00000 => 00000 => 00000
00001 => 00001 => 00001
Line 4,569 ⟶ 4,674:
{{out}}
 
<pre style="overflow=scroll: auto; height: 20em;">0 (0) => 0 (0) => 0 (0)
1 (1) => 1 (1) => 1 (1)
2 (10) => 3 (11) => 2 (10)
Line 5,062 ⟶ 5,167:
}</lang>
{{out}}
<pre style="overflow: auto; height: 5em20em;">
0(00000) --> 0(00000) --> 0(00000)
1(00001) --> 1(00001) --> 1(00001)
535

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.