このディレクトリの索引
#  出典 :: http://pc12.2ch.net/test/read.cgi/tech/1136994325/954
#  pascal  pcpad 
#  1個の自然数nを適当に決めて、nチームが参加する 
#  リーグ戦の全試合を表示するプログラムを書きなさい。


'1個の自然数nを適当に決めて、nチームが参加するリーグ戦の全試合を表示する' :-
       '1個の自然数nを適当に決めて、'(_n),
       'nチームが参加するリーグ戦の全試合を表示する'(_n).

'1個の自然数nを適当に決めて、'(_n) :-
        _n is random(16) + 3.

'nチームが参加するリーグ戦の全試合を表示する'(_n) :-
        'nチームが参加する'(_n,_nチームが参加する),
        forall(   リーグ戦の全試合を(_nチームが参加する,_チーム番号_1,_チーム番号_2),
                  表示する(_チーム番号_1,_チーム番号_2)).

'nチームが参加する'(_n,_nチームが参加する) :-
        findall(M,between(1,_n,M),_nチームが参加する).

リーグ戦の全試合を(_nチームが参加する,_チーム番号_1,_チーム番号_2) :-
        組合せ(_nチームが参加する,2,[_チーム番号_1,_チーム番号_2]).

組合せ(X,1,[A]) :-
        member(A,X).
組合せ([A|Y],N,[A|X]) :-
        N > 1,
        M is N - 1,
        組合せ(Y,M,X).
組合せ([_|Y],N,A) :-
        N > 1,
        組合せ(Y,N,A).

表示する(_チーム番号_1,_チーム番号_2) :-
        チーム(_チーム番号_1,_チーム名_1),
        チーム(_チーム番号_2,_チーム名_2),
        writef('%t-%t\n',[_チーム名_1,_チーム名_2]).

チーム(1,サンフレッチェ広島).
チーム(2,'横浜F・マリノス').
チーム(3,川崎フロンターレ).
チーム(4,セレッソ大阪).
チーム(5,鹿島アントラーズ).
チーム(6,浦和レッズ).
チーム(7,アルビレックス新潟).
チーム(8,'FC東京').
チーム(9,清水エスパルス).
チーム(10,柏レイソル).
チーム(11,名古屋グランパス).
チーム(12,サガン鳥栖).
チーム(13,ベガルタ仙台).
チーム(14,大宮アルディージャ).
チーム(15,ヴァンフォーレ甲府).
チーム(16,湘南ベルマーレ).
チーム(17,ジュビロ磐田).
チーム(18,大分トリニータ).