13/03/25 07:33:30.07
>>91
'Youtubeみたいなランダムでユニークなn文字数の文字列を作る'(_n,_ランダムでユニークなn文字数の文字列) :-
length(Ln,_n),
ランダムでユニークなn要素の文字リストを作る(Ln,['0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,
u,v,w,x,y,z],_ランダムでユニークなn文字数の文字リスト),
atom_chars(_ランダムでユニークなn文字数の文字列,_ランダムでユニークなn文字数の文字リスト).
ランダムでユニークなn要素の文字リストを作る([],_,[]).
ランダムでユニークなn要素の文字リストを作る([_|Ln],_選択可能文字リスト,[_選択値|R]) :-
リストからランダムに値を抜き取る(_選択可能文字リスト,_選択値,_選択値を抜き取った選択可能文字リスト),
ランダムでユニークなn要素の文字リストを作る(Ln,_選択値を抜き取った選択可能文字リスト,R).
リストからランダムに値を抜き取る(_リスト,_値,_値を抜き取ったリスト) :-
乱数値をリストの抜き取り位置とする(_リスト,_乱数値,L),
リストから値を抜き取る(L,_値,_値を抜き取ったリスト).
乱数値をリストの抜き取り位置とする(_リスト,_乱数値,_要素数が乱数値の変数リスト) :-
length(_リスト,_要素数),
_乱数値 is random(_要素数),
length(_要素数から乱数値の変数リスト,_乱数値).
リストから値を抜き取る(_要素数が乱数値の変数リスト,_値,_値を抜き取ったリスト) :-
append(_要素数が乱数値の変数リスト,[_値|R],_リスト),
append(,R,_値を抜き取ったリスト).