このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/561
#  [1] 授業単元:C言語演習 
#  [2] 問題文(含コード&リンク): 
#  問題A 
#  0と1だけで構成されたテキストファイルAがある。このファイルを読み込み、文字数をカウントし、 
#  同じ文字数の0と1で構成された乱数列を生成し、テキストファイルBとして出力するプログラムを作成せよ。 
#  シード値はシステム時刻など適当なものを使用せよ。 
#  問題B 
#  問題Aで使用したテキストファイルA、Bを一文字ずつXORしテキストファイルCとして出力するプログラムを作成せよ。 
#  

'問題A
0と1だけで構成されたテキストファイルAがある。このファイルを読み込み、文字数をカウントし、
同じ文字数の0と1で構成された乱数列を生成し、テキストファイルBとして出力するプログラムを作成せよ。'(_テキストファイルA,_テキストファイルB) :-
        'このファイルを読み込み、文字数をカウントし、同じ文字数の0と1で構成された乱数列を生成し'(_テキストファイルA,_要素数,_乱数数字ならび),
        テキストファイルBとして出力する(_テキストファイルB,_乱数数字ならび).

'このファイルを読み込み、文字数をカウントし、同じ文字数の0と1で構成された乱数列を生成し'(_テキストファイルA,_要素数,_乱数数字ならび) :-
        このファイルを読み込み(_テキストファイルA,Chars),
        文字数をカウントし(Chars,_文字数),
        同じ文字数の0と1で構成された乱数列を生成し(_文字数,Chars,_乱数数字ならび).

このファイルを読み込み(_テキストファイルA,Chars) :-
        get_chars(_テキストファイルA,Chars).

文字数をカウントし(Chars,_文字数) :-
        length(Chars,_文字数).

同じ文字数の0と1で構成された乱数列を生成し(0,[],[]) :- !.
同じ文字数の0と1で構成された乱数列を生成し(N,L1,[A|R]) :-
        M is random(N),
        一文字取り出す(M,L1,A,L2),
        N_1 is N - 1,
        同じ文字数の0と1で構成された乱数列を生成し(N_1,L2,R).

一文字取り出す(M,L1,A,L2) :-
        length(L0,M),
        append(L0,[A|R],L1),
        append(L0,R,L2).

テキストファイルBとして出力する(_テキストファイルB,L) :-
        atom_chars(_乱数文字列,L),
        open(_テキストファイルB,write,Outstream),
        write(Outstream,A),
        close(Outstream).