このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/926
#  [1] 授業単元: C言語プログラミング 
#  [2] 問題文(含コード&リンク): 
#   
#  1以上の整数値を入力すると、以下の条件を満たすピラミッドをoxを使って表示するピラミッドを出力するプログラムを作成せよ 
#   
#  *条件 
#   1以上の奇数が入力された時のみピラミッドを表示し、それ以外の場合は「条件をみたしていないので表示しない」と出力する。 
#   ピラミッドの底辺の長さは入力された数値とする。 
#   
#  *実行例 
#  xxxo 
#  xxooo 
#  xooooo 
#  ooooooo 
#   
#  

'1以上の整数値を入力すると、以下の条件を満たすピラミッドをoxを使って表示するピラミッドを出力する *条件 1以上の奇数が入力された時のみピラミッドを表示し、それ以外の場合は「条件をみたしていないので表示しない」と出力する。ピラミッドの底辺の長さは入力された数値とする。' :-
        '1以上の整数値を入力すると'(_1以上の整数),
        'ピラミッドを表示する'(_1以上の整数).

'1以上の整数値を入力すると'(_1以上の整数) :-
        write('1以上の整数値(奇数)を入力して下さい : '),
        get_line(Line),
        '1以上の整数値を入力診断,(Line,_1以上の整数),!.
'1以上の整数値を入力すると'(_1以上の整数) :-
        '1以上の整数値を入力すると'(_1以上の整数).

'1以上の整数値を入力診断'(Line,_1以上の整数) :-
        atom_to_term(Line,_1以上の整数,_),
        '1以上の奇数が入力された時のみ'(_1以上の整数),!.
'1以上の整数値を入力診断'(Line,_1以上の整数) :-
        write('条件をみたしていないので表示しない\n'),
        fail.

'1以上の奇数が入力された時のみ'(_1以上の整数),!.
        _1以上の整数 >= 1,
        奇数である(_1以上の整数),!.

ピラミッドを表示する(_1以上の整数) :-
        length(L,_1以上の整数),
        append(L1,[_|L1],L),
        length(L1,Len),
        all(L1,'x'),
        ピラミッドを表示する(_1以上の整数,L1).

ピラミッドを表示する(_1以上の整数,[]) :-
        length(L,_1以上の整数),
        all(L,o),
        put_list_ln(L).
ピラミッドを表示する(_1以上の整数,[A|L1]) :-
        length(L,_1以上の整数),
        append([A|L1],L2,[A|L1],L),
        all(L2,o),
        put_list_ln(L),
        ピラミッドを表示する(_1以上の整数,L1).

奇数である(N) :-
        1 is N mod 2.

put_list_ln([]) :-
        write('\n').
put_list_ln([A|R]) :-
        put_char(A),
        put_list_ln(R).