General FizzBuzz: Difference between revisions

(Added Prolog solution)
Line 2,526:
A simple Prolog solution to the generalised FizzBuzz problem is as follows:
 
<lang prolog>fizzbuzz(N_,Res[],"") :-.
factors(Fs), fizzbuzz(N,Fs,S),
( (S = "", Res is N) ; Res = S ).
 
fizzbuzz(_,[],"").
fizzbuzz(N,[(F,S)|Fs],Res) :-
fizzbuzz(N,Fs,OldRes),
( N mod F =:= 0, string_concat(S,OldRes,Res) ; Res = OldRes ).
 
loop(B,B,_).
loop(A,B,Fs) :-
loop(A,B) :- A < B, fizzbuzz(A,Res), writeln(Res), Next is A+1, loop(Next,B).
A < B, fizzbuzz(A,Fs,S), ( (S = "", Res is NA) ; Res = S )., writeln(Res),
Next is A+1, loop(Next,B,Fs).
 
go :- maxNumber(M), factors(Fs), MLast is M+1, loop(1,MLast,Fs).</lang>
 
It is worth noting that
<lang prolog>factors([(3, "Fizz"), (5, "Buzz")]).</lang>
corresponds to basic FizzBuzz and that the proposed solution can handle an arbitrary number of factors.
 
 
=={{header|Python}}==
Anonymous user