Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
30
Task/Gray-code/Mercury/gray-code-1.mercury
Normal file
30
Task/Gray-code/Mercury/gray-code-1.mercury
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
:- module gray.
|
||||
|
||||
:- interface.
|
||||
:- import_module int.
|
||||
|
||||
:- type gray.
|
||||
|
||||
% VALUE conversion functions
|
||||
:- func gray.from_int(int) = gray.
|
||||
:- func gray.to_int(gray) = int.
|
||||
|
||||
% REPRESENTATION conversion predicate
|
||||
:- pred gray.coerce(gray, int).
|
||||
:- mode gray.coerce(in, out) is det.
|
||||
:- mode gray.coerce(out, in) is det.
|
||||
|
||||
:- implementation.
|
||||
|
||||
:- import_module list.
|
||||
|
||||
:- type gray
|
||||
---> gray(int).
|
||||
|
||||
gray.from_int(X) = gray(X `xor` (X >> 1)).
|
||||
|
||||
gray.to_int(gray(G)) = (G > 0 -> G `xor` gray.to_int(gray(G >> 1))
|
||||
; G).
|
||||
gray.coerce(gray(I), I).
|
||||
|
||||
:- end_module gray.
|
||||
Loading…
Add table
Add a link
Reference in a new issue