このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1244449887/905
# [1]c++
# [2]2次元配列n[10][10]のすべての要素に1を代入してから、その内容を表示しなさい。

# また、対角要素だけを1を代入し、ほかはすべて0を代入してから、表示しなさい。
# ただし、対角要素は左上隅から右下隅への対角線上の要素とする。次の図は実行例であ
る。
# --- (2)配列nの内容 ---
#
# 100000000
# 010000000
# 001000000
# 000100000
# 000010000
# 000001000
# 000000100
# 000000010
# 000000001

'2次元配列n[10][10]のすべての要素に1を代入してから、その内容を表示しなさい。' :-
'2次元配列n[10][10]のすべての要素に1を代入してから'(LL),
'その内容を表示しなさい。'(LL).

'2次元配列n[10][10]のすべての要素に1を代入してから'(LL) :-
findall(_行,(
'10行ある',
'10要素の行のすべての要素に1を代入'(_行)),LL).

'10行ある' :-
between(1,10,_).

'10要素の行のすべての要素に1を代入'(_行) :-
'10要素の行の'(_行),
すべての要素に1を代入(_行).

'10要素の行の'(_行) :-
length(_行,10).
        
すべての要素に1を代入([]).
すべての要素に1を代入([1|R]) :-
すべての要素に1を代入(R).

'その内容を表示しなさい。'(LL) :-
表示しなさい(LL).

表示しなさい(LL) :-
forall(行を表示文字列に変換する(LL,_表示文字列),writef('%w\n',[_表示文字列])).

行を表示文字列に変換する(LL,_表示文字列) :-
member(_行,LL),
atomic_list_concat(_行,' ',_表示文字列).



'対角要素だけを1を代入し、ほかはすべて0を代入してから、表示しなさい。' :-
対角要素だけ1を代入しほかは全て0を代入してから(LL),
表示しなさい(LL).

対角要素だけ1を代入しほかは全て0を代入してから(LL) :-
findall(L,(
between(1,10,_n),
対角要素だけ1を代入しほかは全て0を代入(_n,L)),LL).

対角要素だけ1を代入しほかは全て0を代入(_n,L) :-
対角要素だけ1を代入し(_n,L),
他の全ての変数要素は0に(L).

対角要素だけ1を代入し(_n,L) :-
length(L,10),
reverse(L,RL),
対角要素だけ1を代入し(_n,RL,L).

対角要素だけ1を代入し(_n,RL,L) :-
nth1(_n,L,1),
nth1(_n,RL,1).

他の全ての変数要素は0に(L) :-
findall(N,(
member(N,L),
変数要素は0に(N)),L).

変数要素は0に(0) :- !.
変数要素は0に(N).