このディレクトリの索引


ぶどうの房パズル([[_1,_2,_3,_4,_5],[_6,_7,_8,_9],[_10,_11,_12],[_13,_14],[_15]]) :-
        flatten([[_1,_2,_3,_4,_5],[_6,_7,_8,_9],[_10,_11,_12],[_13,_14],[_15]],L),
        三つ組候補([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],LL2),
        ぶどうの房パズル([[_6,_1,_2],[_7,_2,_3],[_8,_3,_4],[_9,_4,_5],[_10,_6,_7],[_11,_7,_8],[_12,_8,_9],[_13,_10,_11],[_14,_11,_12],[_15,_13,_14]],LL2,L).

三つ組候補(L,LL) :-
        findall([_1,_2,_3],(
                    順列(L,3,[_1,_2,_3]),
                    _3 is abs(_1 - _2)),
                LL).

ぶどうの房パズル([],_,[]).
ぶどうの房パズル(LL1,LL2,[L|R]) :-
        select(L,LL1,RR1),
        select(L,LL2,RR2),
        ぶどうの房パズル(RR1,RR2,R).

順列(Y,0,[]).
順列(Y,N,[A|X]) :-
        select(A,Y,Z),
        M is N - 1,
        順列(Z,M,X).