Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
31
Task/FizzBuzz/Mercury/fizzbuzz.mercury
Normal file
31
Task/FizzBuzz/Mercury/fizzbuzz.mercury
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
:- module fizzbuzz.
|
||||
:- interface.
|
||||
:- import_module io.
|
||||
:- pred main(io::di, io::uo) is det.
|
||||
:- implementation.
|
||||
:- import_module int, string, bool.
|
||||
|
||||
:- func fizz(int) = bool.
|
||||
fizz(N) = ( if N mod 3 = 0 then yes else no ).
|
||||
|
||||
:- func buzz(int) = bool.
|
||||
buzz(N) = ( if N mod 5 = 0 then yes else no ).
|
||||
|
||||
% N 3? 5?
|
||||
:- func fizzbuzz(int, bool, bool) = string.
|
||||
fizzbuzz(_, yes, yes) = "FizzBuzz".
|
||||
fizzbuzz(_, yes, no) = "Fizz".
|
||||
fizzbuzz(_, no, yes) = "Buzz".
|
||||
fizzbuzz(N, no, no) = from_int(N).
|
||||
|
||||
main(!IO) :- main(1, 100, !IO).
|
||||
|
||||
:- pred main(int::in, int::in, io::di, io::uo) is det.
|
||||
main(N, To, !IO) :-
|
||||
io.write_string(fizzbuzz(N, fizz(N), buzz(N)), !IO),
|
||||
io.nl(!IO),
|
||||
( if N < To then
|
||||
main(N + 1, To, !IO)
|
||||
else
|
||||
true
|
||||
).
|
||||
Loading…
Add table
Add a link
Reference in a new issue