A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
26
Task/FizzBuzz/Mercury/fizzbuzz.mercury
Normal file
26
Task/FizzBuzz/Mercury/fizzbuzz.mercury
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
:- module fizzbuzz.
|
||||
:- interface.
|
||||
:- import_module io.
|
||||
:- pred main(io::di, io::uo) is det.
|
||||
:- implementation.
|
||||
:- import_module int, string, bool.
|
||||
|
||||
:- func fizz(int) = bool.
|
||||
:- func buzz(int) = bool.
|
||||
fizz(N) = ( if N mod 3 = 0 then yes else no ).
|
||||
buzz(N) = ( if N mod 5 = 0 then yes else no ).
|
||||
|
||||
:- pred fizzbuzz(int::in, bool::in, bool::in, string::out) is det.
|
||||
% 3? 5?
|
||||
fizzbuzz(_, yes, yes, "FizzBuzz").
|
||||
fizzbuzz(_, yes, no, "Fizz").
|
||||
fizzbuzz(_, no, yes, "Buzz").
|
||||
fizzbuzz(N, no, no, S) :- S = 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(S, !IO), io.nl(!IO),
|
||||
fizzbuzz(N, fizz(N), buzz(N), S),
|
||||
( if N < To then main(N + 1, To, !IO) else !:IO = !.IO ).
|
||||
Loading…
Add table
Add a link
Reference in a new issue