このディレクトリの索引

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
t284_1(LX) :-
    findall(L,(for(1,M,10),findall(1,for(1,N,10),L)),LX),
    member(U,LX),
    concat_atom(U,A),
    write_formatted('%t\n',[A]),
    fail;
    true.

t284_2(LX) :-
    findall(L,(for(1,M,10),findall(B,(for(1,N,10),
          (N=M,B=1;not(N=M),B=0))),LX),
    member(U,LX),
    concat_atom(U,A),
    write_formatted('%t\n',[A]),
    fail;
    true.

/* for/3を使用しない定義
t284_2(LX) :-
    length(L,10),
    findall(L,ひとつだけ壱で他は全部零(L),LX),
    member(U,LX),
    concat_atom(U,A),
    write_formatted('%t\n',[A]),
    fail;
    true.

ひとつだけ壱で他は全部零(L) :-
    append(L1,[1|R],L),
    零ならび(L1),
    零ならび(R).

零ならび([]).
零ならび([0|R]) :-
    零ならび(R).
*/