このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/548
#  1] 授業単元:画像処理 
#  [2] 問題文(含コード&リンク): 
#  text.txtを読み取って0なら空白を、1なら*を表示するプログラム(test.c)がある。 
#  これを改良してtest.txtをtext.bmpに変換するプログラムを作れ。 
#  (ただし、0を白色、1を黒色とする。) 
#  test.c 
#  http://ime.nu/codepad.org/Xk3b2CZq 
#   
#  /********test.txtの中身********** 
#  11 6 
#  0 1 1 1 1 1 0 0 0 0 0 
#  0 1 0 1 1 0 1 0 0 0 1 
#  0 1 1 1 1 1 0 0 0 0 0 
#  0 1 0 0 1 1 0 1 0 0 1 
#  0 1 1 1 0 1 0 0 0 0 0 
#  0 1 1 0 0 1 0 0 0 0 0 
#  ******************************/ 
#   
#  

'text.txtを読み取って0なら空白を、1なら*を表示する' :-
       'text.txtを読み取って'(_行数,_列数,_残り画像部Lines),
       '0なら空白を、1なら*を表示する'(_行数,_列数,_残り画像部Lines).

'text.txtを読み取って'(_行数,_列数,_残り画像部Lines) :-
        get_line('text.txt',Lines),
        行数と列数を得る(Lines,_行数,_列数,_残り画像部Lines).

行数と列数を得る(Lines,_行数,_列数,_残り画像部Lines) :-
        Lines = [_第一行|_残り画像部Lines),
        split(_第一行,[' '],[_列数,_行数]).

'0なら空白を、1なら*を表示する'(_行数,_列数,_残り画像部Lines) :-
        '残り画像部Linesを0,1ならびに変換'(_残り画像部Lines,_0_1_ならび),
        '行を切り取りながら0なら空白を、1なら*を表示する'(_行数,_列数,_0_1_ならび).

'残り画像部Linesを0,1ならびに変換'(_残り画像部Lines,_0_1_ならび) :-
        concat_atom(_残り画像部Lines,_画像部文字列),
        split(_画像部文字列,[' '],_0_1_ならび).

'行を切り取りながら0なら空白を、1なら*を表示する'(0,_,_).
'行を切り取りながら0なら空白を、1なら*を表示する'(_行数,_列数,_0_1_ならび) :-
        行データを切り取る(_列数,_0_1_ならび,_行データ,_残り_0_1_ならび),
        行データを変換して表示する(_行データ),
        _行数_1 is _行数 - 1,
        '行を切り取りながら0なら空白を、1なら*を表示する'(_行数_1,_列数,_残り_0_1_ならび),!.

行データを切り取る(_列数,_0_1_ならび,_行データ,_残り_0_1_ならび) :-
        length(_行データ,_列数),
        append(_行データ,_残り_0_1_ならび,_0_1_ならび),!.

行データを変換して表示する(_行データ) :-
        append(_,[_0または1|R],_行データ),
        '0なら空白を、1なら*を表示する'(_0または1),
        一行表示し終わったら改行する(R).

'0なら空白を、1なら*を表示する'(0) :-
        write(' ').
'0なら空白を、1なら*を表示する'(1) :-
        write('*').

一行表示し終わったら改行する([]) :-
        write('\n').