このディレクトリの索引

'FizzBuzzはやさしい課題です。やさしいからこそどのプログラム言語でも
書けますし、それぞれの言語の特長が微妙に表れます。それで最近好まれる課題です。
課題としてのFizzBuzzは、整数を1からある数まで数え上げて、その数が、
3で割り切れたらFizzを5で割り切れたらBuzzをどちらでも割り切れない時はその数を
表示します。3と5の両数で割り切れる場合はFizzBuzzと続けて表示することになります。
ひとつの数を表示したら改行し、ある数まで表示し終わったら終了します。'(_ある数) :-
        '整数を1からある数まで数え上げて'(_ある数,_数),
        '数が、3で割り切れたらFizzを
5で割り切れたらBuzzを
どちらでも割り切れない時はその数を'(_数,_Fizzの表示枠,_Buzzの表示枠,_数の表示枠),
        '表示します。ひとつの数を表示したら改行し、'(_Fizzの表示枠,_Buzzの表示枠,_数の表示枠),
        'ある数まで表示し終わったら終了します。'(_ある数,_数).


'整数を1からある数まで数え上げて'(_ある数,_数) :-
        between(1,_ある数,_数).

'数が、3で割り切れたらFizzを
5で割り切れたらBuzzを
どちらでも割り切れない時はその数を'(_数,_Fizzの表示枠,_Buzzの表示枠,_数の表示枠) :-
        '数が、3で割り切れたらFizzを'(_数,_Fizzの表示枠),
        '数が、5で割り切れたらBuzzを'(_数,_Buzzの表示枠),
        'どちらでも割り切れない時はその数を'(_数,_数の表示枠).

'数が、3で割り切れたらFizzを'(_数,'Fizz') :-
        0 is _数 mod 3,!.
'数が、3で割り切れたらFizzを'(_,'').

'数が、5で割り切れたらBuzzを'(_数,'Buzz') :-
        0 is _数 mod 5,!.
'数が、5で割り切れたらBuzzを'(_,'').

'どちらでも割り切れない時はその数を'(_数,_数の表示枠) :-
        \+(0 is _数 mod 3),
        \+(0 is _数 mod 5),
        swritef(_数の表示枠,'%t',[_数]),!.
'どちらでも割り切れない時はその数を'(_,'').

'表示します。ひとつの数を表示したら改行し、'(_Fizzの表示枠,_Buzzの表示枠,_数の表示枠) :-
        writef('%w%w%w',[_Fizzの表示枠,_Buzzの表示枠,_数の表示枠]),
        nl.

'ある数まで表示し終わったら終了します。'(_数,_数).