このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/210
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# [1 2 0] [3 2 0 1] [3 4 0 2 1]みたいな同じ数字を使わない任意の長さで
# ランダムな数列の作成するプログラム。
#

同一要素のないランダムな数列の作成(_要素数,L) :-
    同一要素のないランダムな数列の作成(1,3721,69069,65535,_要素数,[],L).

同一要素のないランダムな数列の作成(Nth1,A,N,_法,Nth,L,L) :-
    Nth1 > Nth,!.
同一要素のないランダムな数列の作成(Nth1,A,N,_法,Nth,L1,L) :-
    \+(member(N,L1)),
    乗算合同法演算(A,N,_法,M),
    Nth2 is Nth1 + 1,
    同一要素のないランダムな数列の作成(Nth2,A,M,_法,Nth,[N|L1],L).
同一要素のないランダムな数列の作成(Nth1,A,N,_法,Nth,L1,L) :-
    member(N,L1),
    乗算合同法演算(A,N,_法,M),
    同一要素のないランダムな数列の作成(Nth1,A,M,_法,Nth,L1,L).

乗算合同法演算(A,N,_法,M) :-
    M is (A * N + 5) mod _法.