このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/74
#  [1] 授業単元:プログラミング  
#  [2] 問題文(含コード&リンク):  
#  問題1 
#   
#  二次元配列に九九の表をいったん格納する(初期化で代入することは禁じる)。その後、それらの値のルートをとった結果を表形式で出力するプログラムを作れ。 
#   
#  問題2 
#   
#  キーボードから50文字までの文字列(アルファベット、数字、記号の半角)を5つ入力する。入力がすべて終了したら、最後に入力した文字列から順番に出力するプログラムを 
#  作成せよ。文字列は2次元配列に格納すること。 
#   
# 

'二次元配列に九九の表をいったん格納する(初期化で代入することは禁じる)。その後、それらの値のルートをとった結果を表形式で出力する' :-
    九九を行列に格納する(_九九行列),
    member(L,_九九行列),
    member(A,L),
    B is sqrt(A),
    write_formatted('%t,',[B]),
    fail;
    nl,
    fail.
'二次元配列に九九の表をいったん格納する(初期化で代入することは禁じる)。その後、それらの値のルートをとった結果を表形式で出力する'.

九九を行列行列に格納する(_九九行列) :-
    findall(L,(for(1,N,9),その列の九九(N,L)),_九九行列).

その列の九九(N,_その列の九九) :-
    findall(V,(for(1,M,9),V is N * M),_その列の九九).

'キーボードから50文字までの文字列(アルファベット、数字、記号の半角)を5つ入力する。入力がすべて終了したら、最後に入力した文字列から順番に出力する' :-
    findall(_文字列,(for(1,N,5),文字列を入力数(_文字列)),L),
    reverse(L,L2),
    put_lines(L2).

文字列を入力する(_文字列) :-
    get_line(_文字列),
    sub_atom(_文字列,0,_文字数,0,_文字列),
    文字種診断(1,_文字数,_文字列).

文字種診断(N,_文字数,_文字列) :- N > _文字数,!.
文字種診断(N,_文字数,_文字列) :-
    sub_atom(_文字列,N,1,_,A),
    A @>= 'a',A @=< 'z',
    N2 is N + 1,
    文字種診断(N2,_文字数,_文字列).
文字種診断(N,_文字数,_文字列) :-
    sub_atom(_文字列,N,1,_,A),
    A @>= '0',A @=< '9',
    N2 is N + 1,
    文字種診断(N2,_文字数,_文字列).
文字種診断(N,_文字数,_文字列) :-
    sub_atom(_文字列,N,1,_,A),
    A @>= ' ',A @=< '/',
    N2 is N + 1,
    文字種診断(N2,_文字数,_文字列).
文字種診断(N,_文字数,_文字列) :-
    sub_atom(_文字列,N,1,_,A),
    A @>= '[',A @=< '_',
    N2 is N + 1,
    文字種診断(N2,_文字数,_文字列).