このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1250204272/57
# [1] 授業単元:C言語プログラミング  
# [2] 問題文(含コード&リンク):10×10マスの碁盤の内から、scanf命令で
# 入力した2値をx,y座標として、 
# その座標部分を塗りつぶし四角"■"で表示しなさい。
# それ以外は"□"でマス表示するものとします。 
# 両者とも0から9までが入力されるものとします(エラー判定不要)。 
# 入力時の問い合わせメッセージは自由に表示させて下さい。 


'入力した2値をx,y座標として、 
その座標部分を塗りつぶし四角"■"で表示しなさい。
それ以外は"□"でマス表示するものとします。 
両者とも0から9までが入力されるものとします(エラー判定不要)。 
入力時の問い合わせメッセージは自由に表示させて下さい。' :-
盤面の初期化(_盤面),
着手(X,Y),
現在の盤面(_盤面,X,Y,_着手された盤面).


盤面の初期化(_盤面) :-
findall(L,(
between(1,10,_),
length(10,L),
all('□',L)),_盤面).


着手(X,Y) :-
標準入力から文字列を得る(_文字列),
split(_文字列,[' ',','],[X_0,Y_0]),
succ(X_0,X),
succ(Y_0,Y).


現在の盤面(_盤面,X,Y,_着手された盤面) :-
行列の置換(Y,X,'■',_盤面,_着手された盤面_1),
現在の盤面(_着手された盤面_1,_着手された盤面).

現在の盤面(_着手された盤面_1,_着手された盤面) :-
盤面表示(_着手された盤面_1).
現在の盤面(_着手された盤面_1,_着手された盤面) :-
着手(X2,Y2),
現在の盤面(_着手された盤面_1,X2,Y2,_着手された盤面).


盤面表示(_盤面) :-
reverse(_盤面,_原点位置を左下に修正した盤面),
盤面表示の二(_原点位置を左下に修正した盤面),!.


盤面表示の二([]) :- !.
盤面表示の二([L|R]) :-
atomic_list_concat(L,_表示升列アトム),
writef('%t\n',[_表示升列アトム]),
盤面表示の二(R).