このディレクトリの索引
#  出題: http://toro.2ch.net/test/read.cgi/tech/1390525149/231
#  出題補足: http://toro.2ch.net/test/read.cgi/tech/1390525149/238
#  [1] 授業単元名:FizzBuzzクイズ 
#  [2] 問題文(含コード&リンク): 
#  [3] 環境 
#   [3.1] OS: (Windows/Linux/等々)特に問わない 
#   [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)特に問わない 
#   [3.3] 言語: (C/C++/どちらでも可 のいずれか)C++/Java 
#  
#  (p)http://kohada.2ch.net/test/read.cgi/prog/1209467166/401 
#  FizzBuzzクイズ 
#  
#  1.fizz.buzz #=> 1 
#  3.fizz.buzz #=> "Fizz" 
#  5.fizz.buzz #=> "Buzz" 
#  15.fizz.buzz #=> "FizzBuzz" 
#  999.fizz.buzz #=> 999 
#  
#  となるようなメソッドfizz、buzzは定義可能か? 
#  可能である場合、同様にgizzを追加定義し、 
#  7.fizz.buzz.gizz #=> "Gizz" 
#  21.fizz.buzz.gizz #=> "FizzGizz" 
#  35.fizz.buzz.gizz #=> "BuzzGizz" 
#  105.fizz.buzz.gizz #=> "FizzBuzzGizz" 
#  105.fizz.gizz.buzz #=> "FizzGizzBuzz" と拡張・応用ができるか? 
#  
#  メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。 
#  オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。 


fizzbuzzgizz(N) :-
        fizzbuzzgizz([],N,['','','Fizz'],['','','','','Buzz'],['','','','','','','Gizz']).

fizzbuzzgizz(L,N,_,_,_) :-
        length(L,N),!.
fizzbuzzgizz(Ln,N,[_31,_32,_33],[_51,_52,_53,_54,_55],[_71,_72,_73,_74,_75,_76,_77]) :-
        fizzbuzzgizz_1(_31,_51,_71,Ln,A),
        writef('%t%t%t%t ',[_31,_51,_71,A]),
        fizzbuzzgizz([_|Ln],N,[_32,_33,_31],[_52,_53,_54,_55,_51],[_72,_73,_74,_75,_76,_77,_71]).

fizzbuzzgizz_1('','','',Ln,M) :-
        length([_|Ln],M),!.
fizzbuzzgizz_1(_,_,_,_,'').