このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1370255305/744
#  [1] 授業単元:プログラミング実習 
#  [2] 問題文(含コード&リンク): 
#  次の式を計算するプログラムを作れ。 
#      Sum = 14 + 24 + ... + N4 
#  (注意) ・ Nの値は、キーボードから入力できるようにすること。 
#      ・scanfではなくgetcharを用いること 
#  

'次の式を計算するプログラムを作れ 
    Sum = 14 + 24 + ... + N4
(注意) ・ Nの値は、キーボードから入力できるようにすること。
    ・scanfではなくgetcharを用いること' :-
        'Nの値は、キーボードから入力できるようにすること。・scanfではなくgetcharを用いること'(_N),
        'Sum = 14 + 24 + ... + N4 の式を'(_N,L),
        計算する(L,Sum),
        atomic_list_concat(L,' + ',S1),
        write('%t = %t\n',[Sum,S1]).

'Nの値は、キーボードから入力できるようにすること。・scanfではなくgetcharを用いること'(_N) :-
        write('整数N[3-9]を入力して下さい : '),
        get_line(Line),
        '診断 : Nの値はキーボードから入力'(Line,_N),!.
'Nの値は、キーボードから入力できるようにすること。・scanfではなくgetcharを用いること'(_N) :-
        'Nの値は、キーボードから入力できるようにすること。・scanfではなくgetcharを用いること'(_N).

'診断 : Nの値はキーボードから入力'(Line,_N) :-
        atom_number(Line,_N),
        integer(_N),
        _N > 2,!.
'診断 : Nの値はキーボードから入力'(Line,_N) :-
        writef('入力された値%tは3以上9以下の整数ではありません。再入力をお願いします。\n',[Line]),
        fail.

'Sum = 14 + 24 + ... + N4 の式を'(_N,L) :-
        findall(_m_1,(
                    between(1,_m,_N),
                    _m_1 is _m * 10 + 4),
                L).

計算する(L,Sum) :-
        sum(L,Sum).

sum([],0).
sum([N|R],Sum) :-
        sum(R,Sum_1),
        Sum is Sum_1 + N.