このディレクトリの索引
#  
#  フィボナッチ数列によるFizzBuzz
#  

フィボナッチ数列番号と見てのFizzBuzz(N) :-
        fibfizzbuzz(N).

fibfizzbuzz(N) :-
        fibfizzbuzz_2(1,0,1,Y,FizzBuzz),
        writef('%t ',[FizzBuzz]),
        Y = N.

fibfizzbuzz(N,_1,_2,Y,FizzBuzz) :-
        _4 is _1 + _2,
        fibfizzbuzz_2(N,_2,_4,Y,FizzBuzz).

fibfizzbuzz_2(1,0,1,1,1).
fibfizzbuzz_2(N,_2,_4,N,FizzBuzz) :-
        N > 1,
        fizzbuzz診断(N,_4,FizzBuzz).
fibfizzbuzz_2(N,_2,_4,Y,FizzBuzz) :-
        N_2 is N + 1,
        fibfizzbuzz(N_2,_2,_4,Y,FizzBuzz).

fizzbuzz診断(_,_4,'FizzBuzz') :-
        0 is _4 mod 15,!.
fizzbuzz診断(_,_4,'Fizz') :-
        0 is _4 mod 3,!.
fizzbuzz診断(_,_4,'Buzz') :-
        0 is _4 mod 5,!.
fizzbuzz診断(N,_4,N).